我使用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