Nginx PHP-FPM 停止工作,打开连接中的套接字

Dev*_*xon 11 php nginx

我每天都会在 Nginx 上再次出现这个问题,在高流量负载下大约两次。修复很简单,重启服务器,但是当错误发生时,Nginx 完全停止工作。我有一个 NGINX PHP-FPM 设置。

它的问题始于:

020/09/27 09:57:27 [error] 38#38: *430982 upstream timed out (110: Connection timed out) while connecting to upstream, client: x.x.x.x, server: example.com, request: "POST /api/sessions/wri
Run Code Online (Sandbox Code Playgroud)

然后它进入:

2020/09/27 10:03:22 [alert] 40#40: *431277 open socket #18 left in connection 51
2020/09/27 10:03:22 [alert] 38#38: *431298 open socket #34 left in connection 166
2020/09/27 10:03:22 [alert] 40#40: *431288 open socket #28 left in connection 59
2020/09/27 10:03:22 [alert] 38#38: *431296 open socket #32 left in connection 169
2020/09/27 10:03:22 [alert] 38#38: *431257 open socket #36 left in connection 177
2020/09/27 10:03:22 [alert] 38#38: *431291 open socket #23 left in connection 178
2020/09/27 10:03:22 [alert] 38#38: *431253 open socket #27 left in connection 188
2020/09/27 10:03:22 [alert] 38#38: *431300 open socket #31 left in connection 197
2020/09/27 10:03:22 [alert] 38#38: *431312 open socket #12 left in connection 204
2020/09/27 10:03:22 [alert] 38#38: *431259 open socket #38 left in connection 206
2020/09/27 10:03:22 [alert] 37#37: aborting
2020/09/27 10:03:22 [alert] 38#38: aborting
2020/09/27 10:03:22 [alert] 40#40: aborting
2020/09/27 10:03:23 [warn] 21568#21568: 8096 worker_connections exceed open file resource limit: 1024
2020/09/27 10:08:24 [warn] 21574#21574: *636 upstream server temporarily disabled while connecting to upstream,
Run Code Online (Sandbox Code Playgroud)

现在 GET 请求仍然有效。因此,如果我访问该网站,它会加载。但是任何 POST、PUT 或 DELETE 操作都会失败,因此最终用户只能浏览。

关于为什么会发生这种情况的任何想法?是否有可用于检测这些问题的健康检查?

小智 0

可能是您的 Nginx 进程打开了太多文件。您可以按照本文增加此限制:如何增加 Linux 中打开文件的数量限制

要更改此设置,您需要 root 权限并执行以下操作:

  1. 打开/etc/security/limits.conf文件:vi /etc/security/limits.conf

  2. 将这些行附加到文件末尾:

    ## Example hard limit for maximum number of opened files
    *    hard    nofile    10240
    ## Example soft limit for maximum number of opened files
    *    soft    nofile    10240
    
    Run Code Online (Sandbox Code Playgroud)
  3. 保存所有更改并重新启动服务器/VPS 以应用新设置。

注意:数字10240是进程可以打开的最大文件数。根据您的需要更改此值。