2011-06-14 104 views
0

我有一個在cgi上運行的應用程序。我已經將它移植到mod_perl2(使用apache2 :: compat)並將cgi文件重寫爲mod_perl處理程序。奇怪的是,由於mod_perl而獲得的性能超過了日誌記錄中的延遲。當mod_perl執行文件操作比CGI中執行文件操作慢

在應用程序中的記錄機制是像logger-> logmsg(MSG)

記錄器:: logmsg { 我的$味精=移位; 打開LOGFILE,「>> logfile」; print LOGFILE $ msg 關閉LOGFILE; }

有很多應用程序進行記錄,並且由不同級別的日誌記錄的控制。當我關閉日誌記錄時,事務在mod_perl上比在cgi上快80%(代碼庫相同,我只是使用mod_perl的處理程序和cgi的網關腳本運行)。當我打開mod_perl上的日誌應用程序運行速度降低了80%。

從日誌中,我可以看到相同的日誌模塊需要0.01秒因爲當作爲CGI腳本和救援人員到場時mod_perl處理器運行0.03秒運行追加味精成文件。

我嘗試了多種不同的方法,如使用STDOUT和重定向到相同的日誌文件,使用request_obj->日誌法等,但我不能擊敗由CGI所花費的時間。有什麼我做錯了這種做法?通過mod_perl的腳本在同一個Apache服務器執行時

爲什麼文件操作慢3倍。

任何指針,非常感謝。

謝謝。

回答

0

這不是文件IO本身的問題。有一個系統調用(date +%Y%m%d)來獲取時間戳,其速度是cgi中的三倍。這是緩慢的影響。

不過,我不知道爲什麼,當通過CGI而不是modperl來運行apche的是能夠三次快速執行系統命令。

對不起,在這個問題的錯誤信息。