单个django管理页面上的502 Bad Gateway

时间:2013-06-15 13:41:52

标签: django nginx uwsgi

我在单个管理页面上遇到502 Bad Gateway错误: http://Domain.com/admin/sitecategory/add/

虽然所有其他管理页面都运行良好。我检查了django日志,没有错误。我运行了django测试服务器,并且该特定页面也正常工作。

nginx日志:

2013/06/15 13:37:01 [error] 1906#0: *4431 upstream prematurely closed connection while reading response header from upstream, client: 46.185.176.26, server: staging.myapp.com, request: "GET /admin/sitecategory/add/ HTTP/1.1", upstream: "uwsgi://unix:///tmp/myapp-staging.socket:", host: "staging.myapp.com", referrer: "http://staging.myapp.com/admin/sitecategory/"

uwsgi日志:

*** HARAKIRI ON WORKER 1 (pid: 1942, try: 1) ***
*** backtrace of 1942 ***
uwsgi(uwsgi_backtrace+0x25) [0x43ed95]
uwsgi(what_i_am_doing+0x17) [0x43eeb7]
/lib64/libc.so.6(+0x32920) [0x7fec48662920]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x2ee6) [0x7fec48cd64a6]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(+0x6ecbb) [0x7fec48c68cbb]
/usr/lib64/libpython2.6.so.1.0(PyObject_Call+0x53) [0x7fec48c41243]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x2a1b) [0x7fec48cd5fdb]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x54ef) [0x7fec48cd8aaf]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(+0x6ecbb) [0x7fec48c68cbb]
/usr/lib64/libpython2.6.so.1.0(PyObject_Call+0x53) [0x7fec48c41243]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x2a1b) [0x7fec48cd5fdb]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(+0x6ebc7) [0x7fec48c68bc7]
/usr/lib64/libpython2.6.so.1.0(PyObject_Call+0x53) [0x7fec48c41243]
/usr/lib64/libpython2.6.so.1.0(PyObject_CallFunctionObjArgs+0xb0) [0x7fec48c41bb0]
/usr/lib64/libpython2.6.so.1.0(PyObject_Unicode+0x6a) [0x7fec48c7dc6a]
/usr/lib64/libpython2.6.so.1.0(+0xb4c6a) [0x7fec48caec6a]
/usr/lib64/libpython2.6.so.1.0(+0x9e633) [0x7fec48c98633]
/usr/lib64/libpython2.6.so.1.0(PyObject_Call+0x53) [0x7fec48c41243]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x39ab) [0x7fec48cd6f6b]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalCodeEx+0x8de) [0x7fec48cd9c7e]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x50ad) [0x7fec48cd866d]
/usr/lib64/libpython2.6.so.1.0(PyEval_EvalFrameEx+0x54ef) [0x7fec48cd8aaf]
*** end of backtrace ***
HARAKIRI: --- uWSGI worker 1 (pid: 1942) WAS managing request /admin/sitecategory/add/ since Sat Jun 15 16:36:49 2013 ---
[pid: 1818|app: 0|req: 5/5] 46.185.176.26 () {38 vars in 694 bytes} [Sat Jun 15 16:37:01 2013] GET /favicon.ico => generated 5939 bytes in 113 msecs (HTTP/1.1 404) 1 headers in 51 bytes (1 switches on core 0)
*** HARAKIRI ON WORKER 1 (pid: 1942, try: 2) ***
DAMN ! worker 1 (pid: 1942) died, killed by signal 9 :( trying respawn ...

我使用upstart运行uwsgi:

exec uwsgi -b 25000 --chdir=/www/python/apps/myapp-staging/ --module=wsgi:application --env DJANGO_SETTINGS_MODULE=settings --socket=/tmp/myapp-staging.socket --processes=3  --harakiri=10  --max-requests=5000  --vacuum --master --pidfile=/tmp/myapp-staging-master.pid --uid=220 --gid=499 --daemonize=/www/uwsgi/myapp-staging.log

和我的nginx配置如下:

server {
    server_name staging.myapp.com;

    root /www/python/apps/myapp-staging/;



    access_log /www/nginx/staging.myapp.com.access.log;
    error_log /www/nginx/staging.myapp.com.error.log;

    location /static/ {
        alias /www/python/apps/myapp-staging/static/;
        expires 30d;
    }

    location /media/ {
        alias /www/python/apps/myapp-staging/media/;
        expires 30d;
    }

    location / {
        uwsgi_pass unix:///tmp/myapp-staging.socket;
        include uwsgi_params;
        proxy_read_timeout 360;
    }
}

我在这里做错了什么?

由于

2 个答案:

答案 0 :(得分:1)

在nginx配置文件中找到一个错误

        proxy_read_timeout 360;

应该阅读

        uwsgi_read_timeout 360;

HttpUwsgiModule模块有自己的超时指令。

http://wiki.nginx.org/HttpUwsgiModule#uwsgi_read_timeout

答案 1 :(得分:1)

你设置了10秒harakiri的重视,很可能需要更多的时间。

只需删除它,衡量视图需要多长时间并相应地重置