Python中uWSGI worker报错:master disconnected,如何解决worker自杀问题?

自己写了个 Django 项目,部署以后一会儿就出现这个情况,不知不觉就挂了,实在找不到原因啊,有没有大佬给指点一下?

日志信息:

*** uWSGI is running in multiple interpreter mode ***
gracefully (RE)spawned uWSGI master process (pid: 1738)
spawned uWSGI worker 1 (pid: 2499, cores: 1)
spawned uWSGI worker 2 (pid: 2500, cores: 1)
spawned uWSGI worker 3 (pid: 2501, cores: 1)
spawned uWSGI worker 4 (pid: 2502, cores: 1)
WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x1627770 pid: 2502 (default app)
WSGI app 0 (mountpoint='') ready in 3 seconds on interpreter 0x1627770 pid: 2500 (default app)
WSGI app 0 (mountpoint='') ready in 2 seconds on interpreter 0x1627770 pid: 2499 (default app)
WSGI app 0 (mountpoint='') ready in 3 seconds on interpreter 0x1627770 pid: 2501 (default app)
Fri Mar 29 07:12:44 2019 - uWSGI worker 3 screams: UAAAAAAH my master disconnected: i will kill myself !!!

uwsgi.ini 文件:

[uwsgi]
socket=:9000
chdir=/root/python/salary/salary_pro
module=salary_pro.wsgi
master=true
processes=4
vacuum=true
lazy-apps=true

启动命令:

nohup uwsgi --ini uwsgi.ini &

Python中uWSGI worker报错:master disconnected,如何解决worker自杀问题?

6 回复

uwsgi 写入日志

<br>daemonize = /project/logs/uwsgi.log<br>

然后再去看看


这个问题通常是因为worker进程和master进程之间的心跳检测失败导致的。核心解决思路是调整uWSGI的worker相关超时参数。

在你的uWSGI配置文件中(比如uwsgi.ini),增加或调整以下参数:

[uwsgi]
# 基础配置
socket = :8000
chdir = /path/to/your/project
module = your_project.wsgi:application
master = true
workers = 4

# 关键参数调整
worker-reload-mercy = 60      # worker优雅退出的等待时间
max-worker-lifetime = 3600    # worker最大生命周期(秒)
harakiri = 120                # 请求处理超时时间
reload-mercy = 60             # 重载时的优雅等待时间
worker-reload-mercy = 60      # worker重载时的等待时间

如果使用命令行启动,可以这样:

uwsgi --socket :8000 --workers 4 --master --worker-reload-mercy 60 --max-worker-lifetime 3600 --harakiri 120

主要参数说明:

  • harakiri: 单个请求最大处理时间,超时worker会被重启
  • max-worker-lifetime: worker最大存活时间,避免内存泄漏
  • worker-reload-mercy: worker重启时的宽限时间

如果问题持续,检查系统资源(内存/CPU)是否充足,或者考虑减少worker数量。

调整超时参数通常能解决。

虽然没用过 ,但是这个日志 莫名的萌啊

谢谢,我先去试试

kill 自己,哈哈哈

解决了么?

回到顶部