调试 httpd 内存泄漏

调试 httpd 内存泄漏

我在 Dell R610(四核 & 12GB RAM)上运行以下程序:Red Hat Enterprise Linux Server 版本 5.5 httpd 2.2.3 PHP 5.1.6

此服务器上运行的 Web 应用程序正在随机泄漏内存。由于该应用程序相当大,我今天花了很长时间试图想出一种方法来分析或跟踪罪魁祸首脚本。到目前为止,我拥有的最好的工具是 strace 使用strace -p PID -tt -o trace4.log -s 256。不幸的是,内存使用量可以在几秒钟内从 20m 跃升至 791m,因此在罪魁祸首进程上运行 strace 不会产生任何有用的结果。

我尝试使用 strace 启动 httpd strace -f -o trace_all.log /etc/init.d/httpd start,但不幸的是,由于网站的流量相当大,这会导致严重的滞后和无响应。

我知道在生产环境中进行调试并不是最佳做法,但我试图缩小导致此问题的页面和/或脚本的范围,并且在开发环境中测试时无法复制该问题

任何建议将不胜感激。

答案1

另一种不太麻烦的了解内存去向的方法是运行 pmap。运行 pmap -x 将转储出分配给该进程的所有内存的列表。它按内存地址细分,包括分配的大小、内存是该进程私有的还是共享的,以及该内存正在使用的映射(共享库/堆栈)。

相关内容