Apache 内存错误

5
当我尝试重新启动apache2时,遇到了以下错误:
致命错误:无法分配67108864字节的共享内存段:mmap:无法分配内存(12)
我只发现此错误经常出现在虚拟服务器上,但我找不到其他解决方法,除了切换到php-fpm和nginx以减少内存使用。
服务器:Ubuntu 14.04 LTS,2GB RAM,VPS
有人知道如何解决此问题吗? 因为RAM似乎不是问题(1.9GB可用)。
Sodaa

只有在优雅重启时才会发生吗?还是什么时候会发生?shmmax/shmall设置为多少? - ficuscr
不仅仅是优雅的开始。最大总共享内存(千字节)= 8388608。 - SparklingWater
1个回答

5
"致命错误,无法分配共享内存段。" 请使用 "ipcs -lm" 命令确定当前的共享内存限制,并使用 "ipcs -ma" 命令确定当前使用了多少共享内存。此外, 您已经添加了注释以显示 "max seg size (kbytes) = 32768"。 因此,最大段大小为32MB。 原始错误是 "无法分配67108864字节的共享内存段",因此无法分配64MB的段。请将您的最大共享内存段大小从32MB增加到128MB。"
echo "134217728" >/proc/sys/kernel/shmmax
echo "134217728" >/proc/sys/kernel/shmall

然后重试。如果apache2正常工作,可以在/etc/sysctl.conf中添加以下条目,以使更改在重新启动后生效:

kernel.shmmax=134217728
kernel.shmall=134217728

限制如下: 最大段数 = 4096 最大段大小(千字节)= 32768 最大总共享内存(千字节)= 8388608 最小段大小(字节)= 1ipcs -ma 返回没有数字... - SparklingWater
2018年6月15日14:28:00(1202):致命错误,无法分配67108864字节的共享内存段:shmget:无法分配内存(12),/etc/apache2#cat /proc/sys/kernel/shmmax 134217728 /etc/apache2#cat /proc/sys/kernel/shmall 134217728并不能解决问题。 - user637338
可以了!但是我必须像这里发布的那样在 /etc/sysctl.conf 中添加内存限制 https://mage2.pro/t/topic/2271。此外,需要完全重新启动(不仅仅是重新启动 Apache!) - Alphacoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接