在Debian下debugging不稳定的Apache服务器

从昨天开始,我在Debian机器上运行的Apache服务器运行非常不稳定。 Sometiems我的网站加载,有时不。 我认为这与内存有关,因为我的Apache日志内存已满(已分配262144)(尝试分配4480字节)。 我还附上了内存图的截图。 在这里输入图像说明

服务器重新启动可以暂时解决问题。 我查看了正在使用内存的进程,但最大的是6.5%的MySQL。

还有什么地方可以find问题?

编辑:我重新启动后,一个约2小时后,一个免费的-m。 我认为这个趋势是可见的:

root@xxx:~# free -m total used free shared buffers cached Mem: 4016 731 3284 0 80 200 -/+ buffers/cache: 449 3566 Swap: 459 0 459 root@xxx:~# free -m total used free shared buffers cached Mem: 4016 2466 1550 0 92 473 -/+ buffers/cache: 1900 2115 Swap: 459 0 459 

你可能有很多很多的Apache进程在运行。 发出一个ps ax | grep apache2 | wc -l ps ax | grep apache2 | wc -l ps ax | grep apache2 | wc -l看多less。

如果您的KeepAliveTimeout参数太大(如默认值),则有人可以连接到您,让连接徘徊,并占用您的所有资源。

我通常使用KeepAliveTimeout 5 ,所以当nothign在5秒内回来,Apache可以删除连接。

也检查MaxConnectionsPerChild 。 如果他们是无限的,内存泄漏将消耗所有的内存。 使用一些不错的东西,比如10000或50000。

看看加载的模块了。 您可能会有一些未使用的模块,并在每个stream程实例上占用一点内存。 虽然数量不多,但总结很快。

最后,看看你的日志。 看日志里有没有什么奇怪的东西 你可以发现你的服务器正在遭受攻击,或者有人安装了一个失败的库,或者类似的东西。

请检查MaxRequestsPerChild参数是否为0,尝试将其更改为1000(取决于stream量)。 内存不足的信息表明你使用PHP,检查你的php.ini中的memory_limit和max_execution_time值,也许你应该增加/减less时间/内存。 请提供更多关于Apache / PHP和应用程序的信息。

问题的原因是一个很大的邮件队列。 删除队列解决了问题。