问题: Apache进程是在没有将任何活动记录到access.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:0kBAFAIK,它们都是apache2进程,它们被生成(主要是)来处理请求。如果是这样的话,请求应该记录在access.log中。在我的情况下不会发生这种情况。
问题:,为什么apache2会产生这么多这样的病毒?我是不是漏掉了什么?
发布于 2015-10-30 15:53:07
您可能已经配置了Apache,使其使用的内存远远超过所有的ram。这是一个常见的错误。
httpd进程与MySQL进程无关。
httpd进程产生到一定程度,但主要是为了服务最终用户请求--更多的最终用户请求=生成更多的httpd,最多达到配置中设置的限制(例如,256 )。这意味着它将创造256个孩子。
我假设您使用的是Pre叉Apache和进程内应用程序服务器(如PHP或mod_perl)。在此模型中,您将使用最多的内存(每个进程的应用程序的MaxClients*最大内存使用量)。如果你没有那么多,是时候减少一个,另一个或两者。
在一般情况下,这意味着将MaxClients降低到服务器有足够的内存来处理。
https://stackoverflow.com/questions/33439767
复制相似问题