【问题标题】:File operation slower when excuted by mod_perl than when executed in CGI由 mod_perl 执行的文件操作比在 CGI 中执行的要慢
【发布时间】: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


    【解决方案1】:

    这不是文件 IO 本身的问题。有一个系统调用 (date +%Y%m%d) 来获取时间戳,它的速度是 cgi 中的三倍。这产生了减速效果。

    但是,我不确定为什么 apche 在通过 cgi 而不是 modperl 运行时能够以三次一样快的速度执行系统命令。

    对于问题中的错误信息,我们深表歉意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 2014-11-26
      • 2016-05-05
      • 1970-01-01
      相关资源
      最近更新 更多