我使用mod perl 1.3.0和apache 1.3.41 perl版本5.8.6,并且内存大小似乎每3或4次请求增长大约4k。我们正在运行的Perl脚本很简单:如何追踪mod_perl内存泄漏?
print "Content-type: text/html\n\n"; print "baby";
然而,这apache进程只是不停地生长,当我们用Apache基准踩住它。我们正在打它:
ab -n 100000 -c 1 http://localhost/search/search.cgi &> /dev/null
,我们看着进程大小约4兆到24后约20000请求的增长。
要回答以下问题: 我们正在做这个红帽企业4.7。因为我们遇到了一个静态文件,或者直接向cgi请求发送内存,所以它被单独列出。当我们使用PerlHandler Apache :: Registry或PerlRun,或者只是将PerlHandler指向某个处理程序的代码时,它们都会泄漏。
任何人都看过像这样的东西,或知道发生了什么事?
编辑:
感谢您的答案家伙。我已经使用了Devel :: Cycle并发现泄漏,但是这里的问题是我们已经剥离了我们的代码来打印标题和声明。 Perl中的打印功能无法泄漏(我希望....)。 Practical Modperl中的内存泄漏部分我已经阅读过,但它涉及编码问题,并且除非Perl的打印功能存在问题,否则它不是代码。
你可能会考虑把它变成具体的问题。 :) – sharkin 2009-01-21 19:38:26
你也可以考虑发布一个bug报告给apache人员。 – 2009-01-22 22:43:41