django - 数以千计的外来 unicorn worker

标签 django ubuntu gunicorn

我正在为 Django 项目(Ubuntu 14.04 机器)使用带有 nginx 反向代理的 gunicorn 19.7.1 appserver。
ps aux | grep gunicorn | grep -v grep | wc -l产量 3043 眼下。

而在 /etc/init/gunicorn.conf , 我一直有 -w 33 .然而,即使我这样做,这些额外的 worker 仍然存在 sudo service gunicorn stopsudo service gunicorn start .

我如何杀死无关的 worker ?

这怎么发生的?
33的 worker 数一直在我繁忙的生产系统上正确配置。

然而几个小时前,我在尝试 python 的 multiprocessing在服务器上,事情向南发展。 Gunicorn 工作人员吃掉了所有的内存并取出了常驻的 redis 实例。

enter image description here

我恢复了更改并设法使所有内容重新上线,除了内存尚未释放并且我不得不应对这些遗留的 gunicorn worker 。这是怎么回事?

最佳答案

Yet these extra workers persist even if I do sudo service gunicorn stop and sudo service gunicorn start.


service只管理service - 启动进程,因此如果您在服务框架之外启动 Gunicorn worker ,即使您 stop,这些 worker 仍将继续存在。 .

How do I kill the extraneous workers?



快捷方式:

运行此命令列出所有 gunicorn进程 ID 并终止它们,然后重新启动 Gunicorn:

$ pkill gunicorn
$ sudo service gunicorn start

更好的方法:
  • 通过找到父级来确定您“想要的” Gunicorn worker :
    $ sudo service gunicorn status
    

    记下父进程 ID。假设它是 123 .
  • 保存所有“期望的” worker PID 的列表:
     $ echo 123 > desired_workers
     $ pgrep -P 123 >> desired_workers
    
  • 保存所有工作人员的 PID 列表:
     $ pgrep gunicorn > all_workers
    
  • 终止“不受欢迎的” worker :
     $ cat desired_workers all_workers | sort | uniq -u | xargs kill
    
  • 关于django - 数以千计的外来 unicorn worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858963/

    相关文章:

    php - .htaccess 重写托管在 Bitnami/EC2 上的 Wordpress 主机

    django - 使用 Nginx 和 CloudFlare 时如何将真实 IP 传递给 Gunicorn?

    django - heroku上的gunicorn : binding to localhost

    python - Django - 如何创建包含其自己类型的集合的模型?

    django - 向Django Auth用户模型添加便捷方法的最佳方法?

    python - 如何在 Django 中使用 for 循环将每个文件保存在 request.FILES 中?

    codeigniter - 为什么除了默认 Controller 会出现 404 Page Not Found 错误

    ubuntu - 用于 ubuntu 的新软件的 deb 包

    python - Django celery 导入错误 : no module named celery when using gunicorn bind?

    django - 我无法在 Django 的 block 内使用静态模板命令