Apache进程生成而不登录access.log

时间:2015-10-30 15:41:00

标签: mysql linux apache memory process

问题:在没有记录任何活动的情况下生成了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产生如此多的原因可能是什么原因?我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您可能已将Apache配置为使用远远超过您所有内存的所有内容。这是一个常见的错误。

httpd进程与MySQL进程无关。

httpd进程产生到某一点,但主要是为了服务最终用户请求 - 更多的最终用户请求=更多的httpd产生,直到配置中设置的限制,例如,似乎是256(例如)。这意味着它将生产256个孩子。

我假设您正在使用Prefork Apache和进程内应用程序服务器(例如PHP或mod_perl)。在此模型中,最终将使用最大(每个进程的应用程序的MaxClients *最大内存使用量)内存。如果你没有那么多,那么现在是减少一个,另一个或两者的时候。

在一般情况下,这意味着将MaxClients减少到服务器有足够ram来应对的程度。