[英]Locating memory leak in Apache httpd process, PHP/Doctrine-based application
我有一個使用這些組件的PHP應用程序:
我注意到,當我啟動Apache時,我最終得到了10個子進程。 隨着時間的推移,每個進程將在內存中增長,直到每個進程接近10%的可用內存,這開始使服務器慢慢爬行,因為它們一起增長占用了100%的內存。
這是我的最高輸出的快照:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1471 apache 16 0 626m 201m 18m S 0.0 10.2 1:11.02 httpd
1470 apache 16 0 622m 198m 18m S 0.0 10.1 1:14.49 httpd
1469 apache 16 0 619m 197m 18m S 0.0 10.0 1:11.98 httpd
1462 apache 18 0 622m 197m 18m S 0.0 10.0 1:11.27 httpd
1460 apache 15 0 622m 195m 18m S 0.0 10.0 1:12.73 httpd
1459 apache 16 0 618m 191m 18m S 0.0 9.7 1:13.00 httpd
1461 apache 18 0 616m 190m 18m S 0.0 9.7 1:14.09 httpd
1468 apache 18 0 613m 190m 18m S 0.0 9.7 1:12.67 httpd
7919 apache 18 0 116m 75m 15m S 0.0 3.8 0:19.86 httpd
9486 apache 16 0 97.7m 56m 14m S 0.0 2.9 0:13.51 httpd
我沒有長時間運行的腳本(它們最終終止,最長的可能是2分鍾),我的工作假設是每個腳本終止后,它使用的內存將被釋放。 (也許有人可以糾正我)。
我的預感是它可能是APC,因為它在請求之間存儲數據,但同時,它會將數據存儲在httpd進程中似乎很奇怪。
如何跟蹤我的應用程序的哪個部分導致內存泄漏?
我可以使用哪些工具來了解httpd進程內存使用量的增長情況以及有何貢獻?
我的預感是它可能是APC,因為它在請求之間存儲數據,但同時,它會將數據存儲在httpd進程中似乎很奇怪。
這有什么奇怪的? 這正是APC所做的。 但是,內存在所有httpd進程之間共享,所以它沒有聽起來那么糟糕。 請參閱APC在哪里存儲其操作碼和用戶變量緩存? 詳情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.