前端请Nginx + Webman 踩坑:为什么我的后端请求一直在 Processing?求卡住

16 阅读1分钟

Nginx + Webman 踩坑:为什么我的后端请求一直在 Processing?

💡 关于我在工作中实际遇到的现象是:前端发起的某些请求一直Pending中,直到前端1分钟超时才会取消请求,我重启一下nginx,请求又能成功。

大纲

具体现象

解决过程

正文

具体现象

前端发起请求,有时候是这个接口Pending,有时候又是另一个接口Pending,然后一直请求不成功,直到超时,看了nginx的access.log,也没有日志。 接口Pending现象:

但是我此时使用如下命令:

nginx -s stop && sleep 2 && nginx

重启一下nginx后,Pending中的请求又能成功了,还是第一次遇到这种情况,就觉得很奇怪。

遂问gemini,结果这同学一次就给我解决方案并成功解决了我的问题,太让我惊喜了!

我是这样提问的:

我把我的nginx.conf和我具体主机的conf都发给gemini,再描述自己遇到的具体现象,gemini很快就给我解决方案了,说是:

1. upstream 队列满了

2. 系统句柄数限制

解决过程

这是我主机目前的配置:

1. 先改upstream 队列 改成如下:

# 在 http 块内定义(建议放在 include 之前)upstream webman_backend {    server 127.0.0.1:8789;    keepalive 32; # 保持 32 个长连接,减少握手损耗}server {    # ... 其他配置 ...    location /server {        # ... 头信息保持不变 ...        proxy_pass http://webman_backend; # 使用定义的 upstream        proxy_http_version 1.1;         # ...    }}

2. 再改系统句柄数限制

worker_rlimit_nofile 65535;

之后就没有接口Pending了: