sam*_*uel 1 django nginx uwsgi
Stack:nginx,uwsgi,django
uwsgitop和top都显示uwsgi工作者是空闲的,而nginx错误日志表示上游超时.
我认为一些请求需要很多资源,比如等待db或cache,而其他的则不需要.在检查超时请求后,他们中的大多数都没有贪婪.任何形式的请求都已超时.
那么,如果其他人真的很忙,为什么nginx没有将请求播种到空闲的?为什么uwsgi大师只是让别人忙,其他人闲着?
我想回答我自己的问题.
将内核参数:net.ipv4.ip_conntrack_max从65560更改为6556000
我有一个关于我们如何找到答案的完整故事:
用户说慢,慢,慢
nginx充斥着"上游连接超时"
我检查了uwsgi日志,发现了一些错误,修复了它; 发现更多,修复更多,这个循环持续了几天.直到昨天,我认为与uwsgi,memcached,db,redis或任何后端无关,因为uwsgi闲置
所以我认为nginx肯定有错误,重新加载,重新启动,检查连接,工作人员,proxy_read_timeout等等没有运气.
检查ulimit -n,报告1024,默认值.我有8个nginx工作者,所以连接应达到1024*8,我认为这可能没问题,因为nginx从未说过太多打开的文件.无论如何,我把它改为4096.没有运气.
检查连接号和状态,然后出现问题.上游连接都处于syn_sent状态,然后超时发生.300个连接中只有2个或3个处于已建立状态.我们想知道原因.我的一个朋友告诉我使用tcpdump,这是我从未敢尝过的神奇工具.
然后我们去syslog并发现以下错误,最后我们解决了这个问题
归档时间: |
|
查看次数: |
1999 次 |
最近记录: |