2011-06-14 2 views
0

CGI에서 실행되는 응용 프로그램이 있습니다. mod_perl2 (apache2 :: compat 사용)로 포팅하고 cgi 파일을 mod_perl 핸들러로 다시 작성합니다. 이상하게도, mod_perl로 인해 얻게되는 성능은 로깅의 대기 시간보다 길다.CGI에서 실행될 때보 다 mod_perl에 의해 실행될 때 파일 조작이 더 느림

응용 프로그램의 기록 메커니즘 logger-> logmsg 같다 (MSG)

로거 :: logmsg 내 $ { 의 MSG = 시프트; 열기 LOGFILE, ">> logfile"; LOGFILE $ msg 닫기 LOGFILE; }

응용 프로그램에서 많은 로깅을 수행하며 다른 로깅 수준에 의해 제어됩니다. 로깅을 끄면 트랜잭션 처리가 cgi보다 mod_perl에서 80 % 더 빠릅니다 (코드베이스는 동일합니다.) mod_perl 용 처리기와 cgi 용 게이트웨이 스크립트를 사용하여 실행 중입니다. mod_perl에서 로깅 응용 프로그램을 켜면 80 % 느리게 실행됩니다.

로그에서 cgi 스크립트로 실행할 때 msg를 파일에 추가하는 데 동일한 로그 모듈이 필요하며 그 중 mod_perl 핸들러를 실행할 때 .03 초가 걸리는 것을 볼 수 있습니다.

나는 STDOUT을 사용하고 request_obj-> log 메소드 등을 사용하여 로그 파일로 리디렉션하는 것과 같은 여러 가지 방법을 시도했지만 cgi가 걸린 시간을 이길 수는 없다. 이 접근법에 내가 잘못하고있는 것이 있습니까?

동일한 아파치 서버의 mod_perl 스크립트를 통해 수행 할 때 파일 작업이 3 배 더 느린 이유는 무엇입니까?

모든 포인터는 높이 평가됩니다.

감사합니다.

답변

0

이것은 IO 파일 자체에는 문제가되지 않았습니다. cgi 에서처럼 느려지는 타임 스탬프를 가져 오는 시스템 호출 (date +%Y%m%d)이있었습니다. 이것은 감속 효과가있었습니다.

그러나 apche가 modperl이 아닌 cgi를 실행할 때 왜 apche가 빠른 속도로 시스템 명령을 실행할 수 있는지 잘 모르겠습니다.

질문에 대한 잘못된 정보를 죄송합니다.

관련 문제