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

查找Apache httpd进程中的内存泄漏,基于PHP/Doctrine的应用程序,php,apache,memory-leaks,apc,Php,Apache,Memory Leaks,Apc,我有一个使用以下组件的PHP应用程序: Centos 5.4上的Apache 2.2.3-31 PHP 5.2.10 启用远程调试的Xdebug 2.0.5 APC 3.0.19 通过APC使用查询缓存和结果缓存的PHP1.2.1的条令ORM 使用查询缓存的MySQL 5.0.77 我注意到,当我启动Apache时,我最终会得到10个子进程。随着时间的推移,每个进程将在内存中增长,直到每个进程接近可用内存的10%,这将开始使服务器缓慢爬行,因为它们一起增长将占用100%的内存 以下是我的顶级

我有一个使用以下组件的PHP应用程序:

  • Centos 5.4上的Apache 2.2.3-31
  • PHP 5.2.10
  • 启用远程调试的Xdebug 2.0.5
  • APC 3.0.19
  • 通过APC使用查询缓存和结果缓存的PHP1.2.1的条令ORM
  • 使用查询缓存的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进程中内存使用量的增长情况以及原因

我的直觉是它可能是APC,因为它在请求之间存储数据,但同时,它将数据存储在httpd进程内似乎很奇怪

这有什么奇怪的?这正是APC所做的。不过,内存在所有httpd进程之间共享,所以它并不像听起来那么糟糕。有关详细信息,请参阅