【uWSGI】 listen queue of socket (fd: 3) 错误分析

现在django的应用基本都是使用uWSGI来部署,类似下面 listen queue of socket "127.0.0.1:9001" (fd: 3) 的错误出现过2次,下面说下这两次错误出现的解决的过程。

出错场景

  • centos 6.6
  • uWSGI2.0
  • nginx1.6

错误日志截取

Tue Jun  2 17:33:27 2015 - *** uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) ***
Tue Jun  2 17:33:28 2015 - *** uWSGI listen queue of socket "127.0.0.1:9001" (fd: 3) full !!! (101/100) ***
  • 第一次是因为联通机房防火墙配置错了,限制了服务器output,也就是外部发包给服务器没有问题,但是服务器返回包给外部的时候非常慢,几乎不可用,这个时候uwsgi日志中就出现了大量的错误

  • 第二次是并发量剧增之后,活动链接保持在6000左右的时候,大量出现这个错误。

分析

以这个错误为基础,查询了下相关资料,应该是系统级别参数的问题,具体可以参考 linux man page listen(2).

lzz注: 简单的理解就是每个监听的socket,在没有accept之前,等待处理的socket队列长度,linux(至少在centos6.6中)默认是128,在我这个编译的uwsgi中默认是100,也就是说没有调整系统参数之前,最高也就是128。

那么怎样才能把队列的长度调整变长呢?
* 必须调整系统参数,使其生效
* 必须调整uwsgi配置,然后重启应用

操作

修改系统参数

这里直接修改配置文件了,重启后仍然有效。

修改/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

修改完成之后要记得 sysctl -p 重新加载参数

uwsgi调整

不管是配置,还是命令行加一个选项,例如 .ini 文件中添加如下配置

listen=1024

之后重启应用,重新加载配置。

小结

通过修改配置,这种错误基本没有出现过了,系统的吞吐量和并发数都大大提高了。所以系统特性和调优对于提高整个服务质量非常重要。

参考

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容中的报错信息,出现了 ModuleNotFoundError: No module named 'flask' 的错误。这意味着在运行uwsgi.ini时,没有找到名为'flask'的模块。 根据引用内容中的参考链接,可以尝试解决这个问题。可以设置uwsgi.ini文件中的pythonpath的值为'/usr/local/lib/python3.8/site-packages/',这样uwsgi就能够找到所需的模块。 所以,你可以尝试修改uwsgi.ini文件,将pythonpath的值设置为'/usr/local/lib/python3.8/site-packages/',然后重新运行uwsgi.ini文件,这样应该能够解决 ModuleNotFoundError: No module named 'flask' 的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Python编程:uWSGI配置报错ModuleNotFoundError: No module named 'flask'](https://blog.csdn.net/mouday/article/details/82594765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [【解决方法】Docker+uWSGI+Flask 报错 ModuleNotFoundError: No module named ‘flask](https://blog.csdn.net/zhyl8157121/article/details/119751488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值