挂起时,Supervisorctl 不会自动重启守护进程队列工作者

Posted

技术标签:

【中文标题】挂起时,Supervisorctl 不会自动重启守护进程队列工作者【英文标题】:Supervisorctl does not auto-restart daemon queue worker when hanging 【发布时间】:2015-12-21 22:53:34 【问题描述】:

我有 supervisorctl 使用此配置管理一些守护进程队列工作人员:

[program:jobdownloader]
process_name=%(program_name)s_%(process_num)03d
command=php /var/www/microservices/ppsatoms/artisan queue:work ppsjobdownloader --daemon --sleep=0
autostart=true
autorestart=true
user=root
numprocs=50
redirect_stderr=true
stdout_logfile=/mnt/@@sync/jobdownloader.log

有时有些worker就像挂起(运行但停止获取队列消息)并且supervisorctl不会自动重启它们,所以我必须监控并手动重启它们。

配置有问题吗?我能做些什么来防止这种情况在未来发生?

【问题讨论】:

【参考方案1】:

更新:

将进程作为正常进程(非守护进程)运行,以便 supervisorctl 可以在工人发出退出代码后重新启动:

[program:jobdownloader]
process_name=%(program_name)s_%(process_num)03d
command=php /var/www/microservices/ppsatoms/artisan queue:work ppsjobdownloader --sleep=0
autostart=true
autorestart=true
user=root
numprocs=50
redirect_stderr=true
stdout_logfile=/mnt/@@sync/jobdownloader.log

【讨论】:

唯一注意事项:守护进程在利用 CPU 资源方面效率更高。

以上是关于挂起时,Supervisorctl 不会自动重启守护进程队列工作者的主要内容,如果未能解决你的问题,请参考以下文章

NSURLSessionDownloadTask 在挂起时继续下载

挂起时GmsClient“在仍然连接时调用connect()”

原生 Android 应用程序在挂起时是不是应该释放 OpenGL 资源?

当应用程序挂起时,我如何知道 NSURLSessionUploadTask 是不是正在工作?

应用退出或挂起时处理推送负载

javascript 文件挂起时 SignalR 连接块