我有个问题。随着时间的推移,Apache 进程的内存消耗应该增长吗?我想知道这是正常的 Apache 行为还是我们可能以某种方式在代码中导致了这种情况?
基本上,我们有一个简单的 LAMP 堆栈运行 Drupal。在 Apache 重新启动时,进程以 120MB 的速度启动,最终所有进程都攀升到 500-1GB 内存(常驻,又称物理非交换)。
这似乎也不受时间或实际服务器负载的影响。
非常感谢您的帮助,谢谢!
答案1
不,apache 内存消耗不应该异常增长,因为子进程会在一段时间后被终止。如果您的 apache 正在消耗您的内存,您可以调整 apache 配置。
MaxRequestsPerChild 300
Timeout 15
KeepAlive On
MaxKeepAliveRequests 30
KeepAliveTimeout 3
请记住,您越减少进程的生命,您的服务器就会越快,但这会增加您的 CPU 使用率。
答案2
作为一般规则,Apache 进程不应该毫无原因地增长。如果您的 Apache 进程在处理请求时确实膨胀,您可以排除缓存,并且像 Zoredache 在他的评论中提到的那样,您可能正在运行的某些脚本中存在内存泄漏。
调试内存泄漏留给读者练习 - 像这样的工具valgrind
可能会有所帮助。