服务器因为 Apache 不断崩溃,有什么办法可以阻止这种情况吗,服务器有 2GB 交换空间和 3GB 内存
May 25 03:33:41 server kernel: [ 3513.200719] [<c015959c>] out_of_memory+0x14e/0x17f
May 25 03:33:41 server kernel: [ 3513.211491] Out of memory: kill process 2936 (apache2) score 87364 or a child
May 25 04:35:30 server kernel: [ 7239.936995] [<c015959c>] out_of_memory+0x14e/0x17f
May 25 04:35:30 server kernel: [ 7239.948878] Out of memory: kill process 2936 (apache2) score 88236 or a child
May 25 05:42:57 server kernel: [11210.572510] [<c015959c>] out_of_memory+0x14e/0x17f
May 25 08:13:23 server kernel: [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 0000000000100000
答案1
首先,请注意 OOM 终止程序只是因为需要额外的内存而终止 Apache 进程 - 并不一定是 Apache 消耗了系统上的所有内存。
也就是说,您应该限制允许生成的 Apache 进程数。您的 /etc/apache2/apache2.conf 将包含“服务器池大小调节”部分(假设您使用默认的 MPM 配置);这将指定 Apache 可以增长到的最大工作线程数和进程数。
如果 (MaxClients * 每个客户端的内存) 大于 (物理内存 - 所有其他应用程序) 所能容纳的内存,则它太大了。很可能您已将其设置为默认设置,让 Apache 消耗所有可用内存,然后 OOM 杀手就会出现。