挂起时,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 资源?