美文网首页python学习
django 学习之路(四)uwsgi 运行之后产生多个进程

django 学习之路(四)uwsgi 运行之后产生多个进程

作者: 二傻吧 | 来源:发表于2019-09-25 14:09 被阅读0次

    问题描述

    • 当根据第二课时的内容去试项目的时候,发现uwsgi打开时不起作用了,网站也打不开了,

    • gg,然后去看端口,端口也是ok的,然后ps -ef 了一下,发现有好多个<font color=#FF0000>uwsgi --ini </font> ,真的好多个,傻傻的kill了半天,之前以为uwsgi运行完就结束了,,没想到它并不会结束,而是一直存在。知道了原因,这次出现问题就迎刃而解了。

    其实原因如下:

    • 可以通过uwsgi --ini /etc/uwsgi.ini,来产生一个主进程uwsgi.ini进程,进程号会出现在uwsgi.ini中配置的pid文件中。

    • 由于每次关闭shell时都没有 uwsgi --stop 但是每次开启shell时都有进行--ini /etc/uwsgi.ini 导致产生多个uwsgi进程

    • 并且另一个原因,请看配置:

    uwsgi 的配置:

    [uwsgi]
    socket= :8000  #内网也是可以的
    chdir=/home/ljh/project/Hello
    wsgi-file=Hello/wsgi.py
    processes=4 #为我们的项目开启了4个可以并发的进程,可以很快的响应,但是比较耗内存
    threads=2 #为每个进程开启了两个线程
    master=True
    pidfile=/usr/local/uwsgi/uwsgi.pid
    daemonize=/usr/local/uwsgi/uwsgi.log
    

    从上面的配置内容看到,相当于一次开了8个线程,这样的话,相当于uwsgi --ini /etc/uwsgi.ini 执行一次就产生4个进程,8个线程(但是事实好像不止8个,后面再详细看原因)

    解决方法

    step1. 降低配置

    其实高配置真的对于这种自己玩的小服务器是不太合适的,首先我决定配置改低一点:

    [uwsgi]
    socket= :8000  #内网172.21.*.*:8000也是可以的 (*是被我隐藏了,这里填自己的内网就行)
    chdir=/home/ljh/project/Hello
    wsgi-file=Hello/wsgi.py
    processes=2 #为我们的项目开启了2个可以并发的进程,可以很快的响应,但是比较耗内存
    threads=2 #为每个进程开启了两个线程
    master=True
    pidfile=/usr/local/uwsgi/uwsgi.pid
    daemonize=/usr/local/uwsgi/uwsgi.log
    

    step1. 改进开启方式

    每次打开uwsgi之后可能会忘了关,那么每次开启一个shell时,可以直接先运行下面的命令:

    uwsgi --reload $uwpid 
    #$uwpid是我把uwsgi的pid文件路径加进了~/.bashrc之后的变量名,这样方便后面用
    #加入的方法是打开~/.bashrc然后再文件的后面追加一句export $uwpid="/usr/local/uwsgi/uwsgi.pid"
    #然后 source ~/.bashrc就可以了
    

    step2. uwsgi关闭和重启

    uwsgi --reload $uwpid #重启
    uwsgi --stop $uwpid #关闭,这样就不用一个个kill了
    

    相关文章

      网友评论

        本文标题:django 学习之路(四)uwsgi 运行之后产生多个进程

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