我发现我的 vps nginx 错误日志是这样的
2013/04/06 03:28:04 [alert] 8557#0: mmap(MAP_ANON|MAP_SHARED, 5242880000) failed (12: Cannot allocate memory)
2013/04/06 04:05:30 [alert] 10299#0: mmap(MAP_ANON|MAP_SHARED, 5242880000) failed (12: Cannot allocate memory)
2013/04/06 04:05:58 [alert] 10786#0: mmap(MAP_ANON|MAP_SHARED, 5242880000) failed (12: Cannot allocate memory)
是什么原因造成的?内存大约16GB
问候
答案1
我遇到了类似的问题。
第一的检查您的共享内存设置。
echo $((`cat /proc/sys/kernel/shmmax` / 1024 / 1024))Mb
就我而言,我只有 32Mb。
如果你想增加此内存(对于你的服务器内存来说,这可能是一个好主意),请检查此项文档
第二,检查您的 nginx 代理设置 -proxy_cache_path
参数。在我的情况下,它位于里面,/etc/nginx/site-enabled/my-site.com
但您可能在/etc/nginx/
文件夹内的任何文件上找到它。
我有这一行:fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:500m inactive=60m;
,这需要500Mb!共享内存。
因此,将 keys_zone 内存部分更改为共享内存的最大值。您可以阅读有关fastcgi_cache_path
参数的更多信息这里
之后记得重启 nginx。
祝你好运!
答案2
首先,我建议您提供有关可用内存和 nginx 版本的更多信息。
似乎您没有其他~5G服务器上的内存。
尝试减少 nginx 配置服务器中的共享内存大小(检查proxy_cache_path在 nginx 中)
答案3
也许它需要更多共享内存?您可以考虑增加 /etc/sysctl.conf 中的 kernel.shmmax 属性。默认情况下,它可能不存在,但您可以
cat /proc/sys/kernel/shmmax
看看现在是什么情况。
答案4
我的内存是 16gb,但 mysql、php-fpm 和 nginx 使用了大约 14gb。当我重新启动 nginx 时会出现此信息。因为 nginx 在 /dev/shm 的缓存大约有 5gb,如果内存小于 nginx 缓存大小,nginx 就不会重新启动。重新启动 php-fpm 并释放大约 11gb 的内存后,这个问题就解决了。感谢您的贡献