【发布时间】:2011-09-14 09:59:03
【问题描述】:
我有一个在 cgi 上运行的应用程序。我已将其移植到 mod_perl2(使用 apache2::compat)并将 cgi 文件重写为 mod_perl 处理程序。奇怪的是,我通过 mod_perl 获得的性能被日志记录中的延迟所掩盖。
应用中的日志机制类似于logger->logmsg(msg)
记录器::logmsg { 我的 $msg = 班次; 打开日志文件,“>>日志文件”; 打印日志文件 $msg 关闭日志文件; }
应用程序完成了大量的日志记录,并由不同级别的日志记录控制。当我关闭日志记录时,在 mod_perl 上的事务工作速度比在 cgi 上快 80%(代码库相同。我只是使用 mod_perl 的处理程序和 cgi 的网关脚本运行)。当我在 mod_perl 上打开日志记录应用程序时,运行速度会慢 80%。
从日志中,我可以看到相同的日志模块在以 cgi 脚本运行时将 msg 附加到文件中需要 0.01 秒,而在运行 thro mod_perl 处理程序时需要 0.03 秒。
我尝试了不同的方法,例如使用 STDOUT 并将其重定向到日志文件,使用 request_obj->log 方法等,但我无法击败 cgi 所花费的时间。这种方法我做错了什么吗?
为什么在同一个 apache 服务器中通过 mod_perl 脚本执行文件操作会慢 3 倍。
高度赞赏任何指针。
谢谢。
【问题讨论】:
标签: file-io apache2 cgi mod-perl2