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了: