美文网首页
supervisor stop父进程的同时, 也stop掉子进程

supervisor stop父进程的同时, 也stop掉子进程

作者: Ellis | 来源:发表于2018-11-23 11:48 被阅读0次

用python的multiprocessing模块把服务改成多进程后, 遇到几个问题:

  1. 数据库连接失败, 总是在服务运行几十秒后, 卡主, 然后报错数据库连接失败
    InterfaceError: (0, '')
    检查后发现, 是把数据库连接的操作放到while循环中了, 创建了大量的连接导致的

  2. 服务是用supervisor工具来启动的, 当用stop停掉这个含子进程的 服务时, 用ps查看, 发现只kill掉了父进程, 但是子进程仍然在后台跑着

  • 首先,怀疑是不是守护进程的问题, 查看multiprocessing模块, p.daemon默认是False, 也就表示, 默认不是守护进程

  • 这里解释一下守护进程, 如果一个子进程设置为守护进程, 那么当父进程结束时, 子进程不会随父进程退出, 守护进程也被称为精灵进程

  • 回到问题, 这里默认就设置了 daemon=False, 所以也不是这个问题导致

  • 然后又发现, 用ctrl+C 结束进程, 就不会出现这种情况, 所以, 问题就指向了supervisor

解决方法:
  • 在supervisor的配置中(是指当前服务的配置), 添加两条
    killasgroup=true
    stopasgroup=true
    然后别忘了在supervisorctl的控制台中, update一下

相关文章

  • supervisor stop父进程的同时, 也stop掉子进程

    用python的multiprocessing模块把服务改成多进程后, 遇到几个问题: 数据库连接失败, 总是在服...

  • kill 子进程

    起因:重启任务,但是log没有变更。猜测:run.py 的进程不能被stop完全杀死 stop 只能杀死主进程,没...

  • forever

    start:启动守护进程stop:停止守护进程stopall:停止所有的forever进程restart:重启守护...

  • docker容器中无法kill掉pid=1的进程

    关于无法在docker里kill掉PID=1的进程,同样,也无法通过docker stop 来graceful...

  • mac 安装配置supervisor

    supervisor 管理进程用的, 公司线上的进程管理就是supervisor.python 写的 , 子进程中...

  • Hadoop常用命令

    启动Hadoop所有进程:start-all.sh 关闭Hadoop所有进程:stop-all.sh 单进程启动:...

  • 常用shell命令行命令-进程相关

    查看当前进程psps -e 终止进程kill pid暂停进程kill -STOP pid继续执行进程kill -C...

  • 进程与子进程

    讨论几种父、子进程退出时相互产生的影响,同时也整理一下进程与子进程之间的关系。 孤儿进程 (没爹)孤儿进程,顾名思...

  • linux应用程序进程操作(fork vfork)

    1fork ,fork的子进程和父进程同时运行,运行顺序不确定 2 vfork先运行子进程,再运行父进程 3 fo...

  • Linux回收子进程

    孤儿进程 孤儿进程: 父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为init进程,称为init进程...

网友评论

      本文标题:supervisor stop父进程的同时, 也stop掉子进程

      本文链接:https://www.haomeiwen.com/subject/ppxjqqtx.html