Linux 内存泄漏和Apache

Linux 内存泄漏和Apache,linux,apache,memory-leaks,Linux,Apache,Memory Leaks,我的VPS帐户偶尔内存不足。它在Linux上使用Apache。支持人员说这是一个缓慢的内存泄漏,并已使MaxRequestsPerChild能够处理它 关于这一点,我有几个问题。当子进程死亡时,是否会导致脚本丢失会话数据?有人对我如何追踪这个内存泄漏有什么建议吗 谢谢< P>不,当子进程死亡时,除非它在请求的中间,否则不会丢失任何数据(如果由于Max ReavestPress)退出,则不会发生任何数据。 您应该尝试在测试系统上使用相同的软件堆栈重现内存泄漏。您可以使用Valgrind等工具尝试检

我的VPS帐户偶尔内存不足。它在Linux上使用Apache。支持人员说这是一个缓慢的内存泄漏,并已使MaxRequestsPerChild能够处理它

关于这一点,我有几个问题。当子进程死亡时,是否会导致脚本丢失会话数据?有人对我如何追踪这个内存泄漏有什么建议吗


谢谢

< P>不,当子进程死亡时,除非它在请求的中间,否则不会丢失任何数据(如果由于Max ReavestPress)退出,则不会发生任何数据。

您应该尝试在测试系统上使用相同的软件堆栈重现内存泄漏。您可以使用Valgrind等工具尝试检测它

您还可以尝试调试web服务器及其模块,这将使您能够检测正在发生的事情

在非生产系统中很难再现生产系统的行为。如果您有web应用程序的自动测试覆盖范围,您可以尝试使用完整的自动测试套件,但实际上这不可能覆盖所有代码路径,因此可能会错过泄漏的路径

当子进程死亡时,是否会导致脚本丢失会话数据

在不知道您使用的脚本语言和会话处理程序(以及实际代码)的情况下,很难说清楚。

在大多数情况下,在模块中使用脚本语言或通过[FAST] CGI,那么会话数据实际上不太可能丢失——尽管如果进程在处理请求的过程中死亡,它可能没有机会将更新的会话写回存储会话的任何内容。如果在写回过程中它不太可能死亡,它可能会损坏会话数据。这些都是非常特殊的情况

如果您的应用程序逻辑是通过守护进程(例如Java容器)实现的,那么很可能会累积内存泄漏(尽管这些泄漏会针对不同的进程报告)

请注意,如果通过设置MaxRequestsPerChild来缓解该问题,则表示该问题发生在Apache模块中

根据我的经验,Apache本身的生产版本非常稳定,没有内存泄漏。然而,我并没有使用所有的模块。不确定ExtendedStatus是否按模块给出内存使用情况的breakdwon-可能值得检查

我以前见过PHP模块加载的模块的内存管理问题,不遵守PHP的内存限制——但这些问题在请求结束时已经消除

C