在我的 ubuntu 10.04 VPS 上,运行 durpal 站点的 nginx (0.7.??)+ fcgi web 服务器上经常出现 500 错误,当我跟踪 nginx 错误日志时,我看到很多这样的错误:
socket() 失败:没有可用的缓冲区空间)连接到上游...,
我尝试了不同的配置组合,但都没有解决问题。目前我有 3 个 nginx 工作进程,Keep-alive 超时 15 秒,并且
PHP_FCGI_CHILDREN=5 PHP_FCGI_MAX_REQUESTS=1000
如果您能为这个恼人的问题提出解决方案,我将不胜感激。
答案1
您可能已达到 RAM 或打开套接字的限制。使用 cat /proc/sys/fs/file-max 检查套接字数量,并使用 sysctl -w fs.file-max=[BIG NUMBER] 增加该数量
答案2
您的问题出在上游服务器中,而不是 nginx 中,但我只是猜测。
您可以将工作进程设置为 4,然后尝试
答案3
添加更多 RAM 或释放一些系统资源,以便为系统进程分配内存。
当错误发生时,您能检查一下 free -mt 或 top 吗?