Supervisor 无法停止及启动进程

记一次supervisor无法控制所管理进程的处理方法

今天由于代码变更,需要重启服务,服务进程使用supervisor管理,

  1. 执行指令:supervisorctl restart group-xxx: 一直没返回;
  2. 查看所重启服务组的进程:supervisorctl status group-xxx: 发现有一个处于 STOPPING状态,其他都是STOPED;
  3. 查询进程状态:ps -ef|grep xxx, 发现进程还活着;
  4. cat /proc/'进程pid' status, 发现进程状态是D,也就是等待磁盘资源(Disk),因为等待磁盘资源是处于内核态,所以supervisor发送的指令进程都无法响应,导致一直处于STOPPING状态;
  5. 查了一下,网上都说需要重启机器,不至于吧,想想等待磁盘的话,我把磁盘资源给他不就可以了吗,可是到底是在等待什么磁盘呢?
  6. 查看一下进程的服务日志,停留在了:begin delete GFS image: /data/image/testimg/,也就是服务要删除机器挂载的磁盘上面的图片,但是一直在这里等着,没有返回,此时基本可以断定是挂载的磁盘有问题;
  7. 查看磁盘状态,是正常挂载,而且也可以查看到图片。。。
  8. 在查看磁盘文件夹状态:ls -al,发现只有读权限,而代码要执行删除,没有权限,所以一直等待;
  9. 修改目录权限,赋予所有权限,进程成功停止。

通过此次事故,知道了一下两个重点知识:
1、服务处理内核态时,是无法响应父进程所发的SIGTERM/SIGINT等指令,但是supervisor作为父进程,已经发出了控制信号量,所以在supervisor中看到的是一直处于stopping状态;
2、如果进程需要磁盘资源,只需要解决资源问题就可以继续往下执行,而不至于重启机器;
3、服务日志一定要记录逻辑的进入和结束点,本次排查过程,日志也起到了关键作用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值