在配置有
django,gunicorn,supervisor和Nginx的这些服务器上运行非常高的流量.但很多时候我倾向于看到502错误.所以我检查了Nginx日志以查看错误,这是记录的内容:
[error] 2388#0: *208027 connect() to unix:/tmp/gunicorn-ourapp.socket Failed (11: Resource temporarily unavailable) while connecting to upstream
任何人都可以帮助调试可能导致这种情况发生的原因吗
这是我们的Nginx配置:
sendfile on; tcp_nopush on; tcp_nodelay off; listen 80 default_server; server_name imp.ourapp.com; access_log /mnt/ebs/Nginx-log/ourapp-access.log; error_log /mnt/ebs/Nginx-log/ourapp-error.log; charset utf-8; keepalive_timeout 60; client_max_body_size 8m; gzip_types text/plain text/xml text/css application/javascript application/x-javascript application/json; location / { proxy_pass http://unix:/tmp/gunicorn-ourapp.socket; proxy_pass_request_headers on; proxy_read_timeout 600s; proxy_connect_timeout 600s; proxy_redirect http://localhost/ http://imp.ourapp.com/; #proxy_set_header Host $host; #proxy_set_header X-Real-IP $remote_addr; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #proxy_set_header X-Forwarded-Proto $my_scheme; #proxy_set_header X-Forwarded-Ssl $my_ssl; }
我们已将Django配置为在Gunicorn中作为通用WSGI应用程序运行. Supervisord用于发射炮兵工人:
home/user/virtenv/bin/python2.7 /home/user/virtenv/bin/gunicorn –config /home/user/shared/etc/gunicorn.conf.py daggr.wsgi:application
这就是gunicorn.conf.py的样子:
import multiprocessing bind = 'unix:/tmp/gunicorn-ourapp.socket' workers = multiprocessing.cpu_count() * 3 + 1 timeout = 600 graceful_timeout = 40
有谁知道我可以从哪里开始挖掘,看看可能导致问题的原因是什么?
这是我的ulimit -a输出在服务器上的样子:
core file size (blocks,-c) 0 data seg size (kbytes,-d) unlimited scheduling priority (-e) 0 file size (blocks,-f) unlimited pending signals (-i) 59481 max locked memory (kbytes,-l) 64 max memory size (kbytes,-m) unlimited open files (-n) 50000 pipe size (512 bytes,-p) 8 POSIX message queues (bytes,-q) 819200 real-time priority (-r) 0 stack size (kbytes,-s) 8192 cpu time (seconds,-t) unlimited max user processes (-u) 1024 virtual memory (kbytes,-v) unlimited file locks (-x) unlimited