目前使用django + uwsgi + nginx设置来为web应用程序提供服务。我目前在重生过程中遇到麻烦,如果他们因django中的python代码不好而死亡。
由于我是一个糟糕的程序员,这种情况发生了很多。我以为uwsgi会重生一个死的过程。
我的配置文件如下: 对于我的UWSGI文件:
[uwsgi]
# variables
projectname = testapp
base = /home/ubuntu/testapp
# config
protocol = uwsgi
pythonpath = %(base)/src/%(projectname)
module = %(projectname).wsgi
socket = /tmp/%(projectname).sock
logto = %(base)/logs/uwsgi.log
chmod-socket = 777
processes = 2
master = 1
harakiri-verbose = true
和我的nginx文件:
server {
listen 80;
server_name mytestserver;
location / {
include uwsgi_params;
uwsgi_read_timeout 300;
uwsgi_pass unix:///tmp/testapp.sock;
}
access_log /home/ubuntu/testapp/logs/access.log;
error_log /home/ubuntu/testapp/logs/error.log;
}
我为nginx和uwsgi制作了init.d文件。 我用emperor模式管理我的uwsgi。将它指向我保存我的uwsgi.ini文件的文件夹(其符号链接到/ etc / uwsgi / vassals)
我的UWSGI日志如下:
请注意PID编号:我从12363和12365开始,进程,在我的django代码Why die here now
中获取打印消息,然后我只剩下进程12363,然后它就死了。并且我的网络应用程序拒绝加载任何内容(该部分有意义)
[pid: 12365|app: 0|req: 85/174] 123.123.123.123 () {32 vars in 414 bytes} [Thu Oct 10 02:31:58 2013] POST /test1=> generated 9 bytes in 4 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
[pid: 12365|app: 0|req: 86/175] 123.123.123.123 () {32 vars in 414 bytes} [Thu Oct 10 02:31:58 2013] POST /test1 => generated 9 bytes in 3 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
[pid: 12363|app: 0|req: 87/176] 123.123.123.123 () {32 vars in 414 bytes} [Thu Oct 10 02:31:59 2013] POST /test1 => generated 9 bytes in 4 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
why break here now?
[pid: 12363|app: 0|req: 88/177] 123.123.123.123 () {32 vars in 414 bytes} [Thu Oct 10 02:32:02 2013] POST /test1 => generated 9 bytes in 5 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
[pid: 12363|app: 0|req: 89/178] 123.123.123.123 () {32 vars in 414 bytes} [Thu Oct 10 02:32:02 2013] POST /test1 => generated 9 bytes in 7 msecs (HTTP/1.1 200) 1 headers in 59 bytes (1 switches on core 0)
我虽然uwsgi皇帝会重生附庸,但附庸没有死?我可以重新启动所有东西,一切都运行正常......然后死掉。
答案 0 :(得分:1)
如果进程死亡,您应该在日志中看到有关其死亡的消息。您确定您的流程不会被卡住吗?你已经启用harakiri详细,但不是harakiri所以没有监视器卡住请求。