問題描述
當(dāng)根據(jù)第二課時的內(nèi)容去試項目的時候,發(fā)現(xiàn)uwsgi打開時不起作用了,網(wǎng)站也打不開了,
gg,然后去看端口,端口也是ok的,然后ps -ef 了一下,發(fā)現(xiàn)有好多個<font color=#FF0000>uwsgi --ini </font> ,真的好多個,傻傻的kill了半天,之前以為uwsgi運行完就結(jié)束了,,沒想到它并不會結(jié)束,而是一直存在。知道了原因,這次出現(xiàn)問題就迎刃而解了。
其實原因如下:
可以通過uwsgi --ini /etc/uwsgi.ini,來產(chǎn)生一個主進(jìn)程uwsgi.ini進(jìn)程,進(jìn)程號會出現(xiàn)在uwsgi.ini中配置的pid文件中。
由于每次關(guān)閉shell時都沒有 uwsgi --stop 但是每次開啟shell時都有進(jìn)行--ini /etc/uwsgi.ini 導(dǎo)致產(chǎn)生多個uwsgi進(jìn)程
并且另一個原因,請看配置:
uwsgi 的配置:
[uwsgi]
socket= :8000 #內(nèi)網(wǎng)也是可以的
chdir=/home/ljh/project/Hello
wsgi-file=Hello/wsgi.py
processes=4 #為我們的項目開啟了4個可以并發(fā)的進(jìn)程,可以很快的響應(yīng),但是比較耗內(nèi)存
threads=2 #為每個進(jìn)程開啟了兩個線程
master=True
pidfile=/usr/local/uwsgi/uwsgi.pid
daemonize=/usr/local/uwsgi/uwsgi.log
從上面的配置內(nèi)容看到,相當(dāng)于一次開了8個線程,這樣的話,相當(dāng)于uwsgi --ini /etc/uwsgi.ini 執(zhí)行一次就產(chǎn)生4個進(jìn)程,8個線程(但是事實好像不止8個,后面再詳細(xì)看原因)
解決方法
step1. 降低配置
其實高配置真的對于這種自己玩的小服務(wù)器是不太合適的,首先我決定配置改低一點:
[uwsgi]
socket= :8000 #內(nèi)網(wǎng)172.21.*.*:8000也是可以的 (*是被我隱藏了,這里填自己的內(nèi)網(wǎng)就行)
chdir=/home/ljh/project/Hello
wsgi-file=Hello/wsgi.py
processes=2 #為我們的項目開啟了2個可以并發(fā)的進(jìn)程,可以很快的響應(yīng),但是比較耗內(nèi)存
threads=2 #為每個進(jìn)程開啟了兩個線程
master=True
pidfile=/usr/local/uwsgi/uwsgi.pid
daemonize=/usr/local/uwsgi/uwsgi.log
step1. 改進(jìn)開啟方式
每次打開uwsgi之后可能會忘了關(guān),那么每次開啟一個shell時,可以直接先運行下面的命令:
uwsgi --reload $uwpid
#$uwpid是我把uwsgi的pid文件路徑加進(jìn)了~/.bashrc之后的變量名,這樣方便后面用
#加入的方法是打開~/.bashrc然后再文件的后面追加一句export $uwpid="/usr/local/uwsgi/uwsgi.pid"
#然后 source ~/.bashrc就可以了
step2. uwsgi關(guān)閉和重啟
uwsgi --reload $uwpid #重啟
uwsgi --stop $uwpid #關(guān)閉,這樣就不用一個個kill了