出现问题的环境
Django 项目使用 uWSGI + Nginx 部署,出现如题问题。
可能导致的原因
1. 防火墙配置问题,限制了服务器外发。
2. 并发量剧增。
对于第2个,因为每个监听的 socket,在没有 accept 之前,等待处理的 socket 队列长度,Linux (至少在 CentOS 7 中) 默认是 128,故考虑调整 socket 队列长度。
修改系统参数,打开 /etc/sysctl.conf ,添加如下内容,
# 对于一个经常处理新连接的高负载 web 服务环境来说,默认的 128 太小了 net.core.somaxconn = 262144 # 表示 SYN 队列的长度,默认为 1024,加大队列长度为 8192,可以容纳更多等待连接的网络连接数 net.ipv4.tcp_max_syn_backlog = 8192 # 网卡设备将请求放入队列的长度 net.core.netdev_max_backlog = 65536
修改完,重新加载参数,
$ sudo sysctl -p
调整 uwsgi.ini 配置文件,添加,
listen=1024
重启应用。
(完)
参考网友博客:https://blog.csdn.net/orangleliu/article/details/48531759