[英]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.