当mod_perl执行文件操作比CGI中执行文件操作慢

问题描述:

我有一个在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倍。

任何指针,非常感谢。

谢谢。

这不是文件IO本身的问题。有一个系统调用(date +%Y%m%d)来获取时间戳,其速度是cgi中的三倍。这是缓慢的影响。

不过,我不知道为什么,当通过CGI而不是modperl来运行apche的是能够三次快速执行系统命令。

对不起,在这个问题的错误信息。