我正在使用版本为2.0.13.1的uwsgi,并使用以下配置:
bin/uwsgi -M -p 5 -C -A 4 -m -b 8192 -s :3031 --wsgi-file bin/django.wsgi --pidfile var/run/uwsgi.pid --touch-reload=var/run/reload-uwsgi.touch --max-requests=1000 --reload-on-rss=450 --py-tracebacker var/run/pytrace --auto-procname --stats 127.0.0.1:3040 --threads 40 --reload-mercy 600 --listen 200
当我运行
uwsgitop
时,所有5个工作进程都显示为繁忙。当我尝试使用 py-tracebacker 获取每个工作进程/线程的堆栈跟踪时,没有响应。进程会挂起。我该如何研究是什么原因导致 uwsgi 进程挂起?
我该如何预防这种情况发生?
我知道 harakiri 参数,但不确定如果进程有其他活动线程,是否会被杀死。
附注: "reload mercy" 设置为非常高的值,以避免对仍有活动线程的工作进程进行终止处理(似乎是错误)。我们有一些 Web 请求需要很长时间才能完成(正在努力转换为任务)。
谢谢。