Gunicorn + Gevent:调试工作人员状态/ WORKER TIMEOUT导致

时间:2017-10-11 19:35:14

标签: django debugging nginx gunicorn gevent

我在Gunicorn上使用Django运行一个非常简单的Web服务器,Gevent工作人员与MySQL进行通信以进行简单的crud类型操作。所有这些都落后于nginx并托管在AWS上。我使用以下配置运行我的应用服务器:

gunicorn --logger-class=simple --timeout 30 -b :3000 -w 5 -k gevent my_app.wsgi:application

然而,有时,工作人员只是卡住了(有时当请求数量增加时。有时即使没有它),TPS也随着nginx丢失而返回499 HTTP错误代码。有时,工作人员已经开始被杀(WORKER TIMEOUT)并且请求被删除。

我无法找到调试工人陷入困境的方法。我已经检查了MySQL的慢速日志,这不是问题所在。

在Java中,我可以使用jstack来查看线程状态或其他一些机制,例如takipi,它在异常到来时提供当时的线程状态。

对于那些可以提供帮助的人,我请你帮我找到一种方法来查看托管的python web服务器的内部状态,即

  • 工人在某一点陈述
  • 线程在给定点处状态
  • 所有请求特定gevent工作者已经开始处理,当它被卡住/杀死时,它实际上卡在哪里
  • 所有请求因工人被杀而终止

我一直在寻找它,并且发现很多人都面临着类似的问题,但他们的解决方案似乎很受欢迎,而且没有提到如何深入了解这一点。

0 个答案:

没有答案