【发布时间】:2012-11-13 06:01:02
【问题描述】:
堆栈:nginx、uwsgi、django
uwsgitop 和 top 都显示 uwsgi worker 处于空闲状态,而 nginx 错误日志显示上游超时。
我认为某些请求需要大量资源,例如等待数据库或缓存,而其他请求则不需要。在检查了超时的请求后,大多数都不是贪婪的。任何类型的请求都已超时。
那么,如果其他人真的很忙,为什么 nginx 不将请求播种给空闲的请求呢?为什么 uwsgi master 只是让人忙而其他人闲着?
【问题讨论】:
-
根据我的经验,nginx wsgi 实现的性能很差,特别是如果应用程序倾向于阻塞几毫秒。
-
他们是一直这样做还是只在负载高时这样做?你的网站有很多 IO 吗?
-
@PauloScardine uwsgi 实际上在同步或异步方式下都工作得很好,虽然我不敢使用异步模式。我用芹菜代替。我以为 uwsig 也被阻塞了,但是其他工作人员处于空闲状态,所以它不可能是阻塞问题。
-
@RickyA 是的,负载和 IO 一直是问题所在,但我们随后解决了这些问题。之前DB IO非常高,经过一番调优,我去掉了高IO。
-
@PauloScardine 我想你说的是 nginx 的 mod_wsgi,一个完全不同的项目(现在也有不同的名称),因为 uWSGI 不在 nginx 进程地址空间中运行。