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

问题描述

  • 当根据第二课时的内容去试项目的时候,发现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了
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 願望:1願望4月業績200萬!2願望快速讓潛意識創造幸運人生!3願望有真愛發生在我身上!感恩:1感恩李寧來支持我業...
    謝奕鋒阅读 65评论 0 0
  • 母亲终于出院了,在医院里20多天,这大概是她生命中的第二次住院。 咳嗽许久,母亲一直执拗着,不肯听劝说,不肯去医院...
    简单的考拉阅读 443评论 0 3
  • 活着的意义是什么?这是一个我们终究要回答的问题,却也是我们一直回答不了的问题。 蔡崇达的《皮囊》故事不多,...
    似羽流年阅读 1,035评论 0 4