当前位置:  开发笔记 > 编程语言 > 正文

在Apache httpd进程,基于PHP/Doctrine的应用程序中查找内存泄漏

如何解决《在Apachehttpd进程,基于PHP/Doctrine的应用程序中查找内存泄漏》经验,为你挑选了0个好方法。

我有一个使用这些组件的PHP应用程序:

Centos 5.4上的Apache 2.2.3-31

PHP 5.2.10

Xdebug 2.0.5启用了远程调试

APC 3.0.19

PHP 1.2.1的Doctrine ORM使用查询缓存和通过APC的结果缓存

MySQL 5.0.77使用查询缓存

我注意到,当我启动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进程内存使用量的增长情况以及有何贡献?

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有