问题和解决方法见: http://wangleide414.iteye.com/blog/2335492
下面是我自己生产过程中遇到解决的过程.
之前遇到过 uWSGI listen queue of socket "127.0.0.1:1124" (fd: 5) full !!! (101/100)这种问题, 也按照网上百度的修改过--listen 1024和net.core.somaxconn但是发现还是会出现full的情况. 所以就安装了uwsgitop监控, 直到某天终于发现有2台full,其余的大面积busy.
重启出问题的两台之后恢复正常.后来发现隔壁busy的一直下不去,而重启过后的机器的uwsgi基本都是空闲,仔细观察发现原来有9个端口阻塞了(见下图)
到此为止找到根本原因了: 当uwsgi所有的端口都阻塞了,自然队列就满了.不管把队列改到多少都是没用的.
解决方法: 1. uwsgi设置杀死超过10分钟的任务 --harakiri 600
2. 检查代码逻辑,避免发生阻塞