socket() 失败:连接到上游时没有可用的缓冲区空间

socket() 失败:连接到上游时没有可用的缓冲区空间

在我的 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 吗?

相关内容