问题:在没有记录任何活动的情况下生成了Apache进程.log。
mysld
被杀死,因为服务器内存不足(仅在物理上运行,现在没有交换)。检查syslog
,在该确切时刻搜索事件。它始于
localhost kernel: [5913722.705565] apache2 invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
然后我认为这里有一些不相关的行,其次是吨(~150秒,通常不超过10个)
localhost kernel: [5913722.706310] [30772] 33 30772 98583 6989 132 0 0 apache2
最后
Out of memory: Kill process 320 (mysqld) score 228 or sacrifice child
Killed process 320 (mysqld) total-vm:904928kB, anon-rss:113960kB, file-rss:0kB
AFAIK,它们都是apache2
个进程,它们(主要)产生以处理请求。如果是这样,请求应记录在access.log
中。在我的情况下,这不会发生。
问题:apache2
产生如此多的原因可能是什么原因?我在这里错过了什么吗?
答案 0 :(得分:0)
您可能已将Apache配置为使用远远超过您所有内存的所有内容。这是一个常见的错误。
httpd进程与MySQL进程无关。
httpd进程产生到某一点,但主要是为了服务最终用户请求 - 更多的最终用户请求=更多的httpd产生,直到配置中设置的限制,例如,似乎是256(例如)。这意味着它将生产256个孩子。
我假设您正在使用Prefork Apache和进程内应用程序服务器(例如PHP或mod_perl)。在此模型中,最终将使用最大(每个进程的应用程序的MaxClients *最大内存使用量)内存。如果你没有那么多,那么现在是减少一个,另一个或两者的时候。
在一般情况下,这意味着将MaxClients减少到服务器有足够ram来应对的程度。