簡體   English   中英

Nginx,uwsgi,django和上游在獲取/發布時超時

[英]Nginx, uwsgi, django and upstream timed out on get/post

應用程序很好,因為如果我從manage.py(runserver)運行它-一切正常(響應GET請求)。配置:

  • nginx 1.4.2
  • python 2.7.3
  • Django 1.5.4
  • uwsgi 1.9
  • 操作系統-Debian

uwsgi yaml配置:

uwsgi:
  chdir: /var/projects/HOA_desk
  module: HOA_desk.wsgi:application
  env: DJANGO_SETTINGS_MODULE=HOA_desk.settings
  socket: /tmp/HOA_desk.sock
  master: 1
  pidfile: /tmp/HOA_desk.pid
  no-orphans: 1
  processes: 2
  max-requests: 5000
  buffer-size: 32768
  harakiri: 30
  reload-mercy: 8
  vacuum: 1
  daemonize: /var/projects/HOA_desk.log
  touch-reload: /var/projects/HOA_desk/hoa_desk_uwsgi.yaml
  stats: 127.0.0.1:9191
  virtualenv: /var/projects/projects_ve/HOA_desk_ve/

nginx.conf

user www-data;
worker_processes  1;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include     mime.types;

    access_log  /var/log/nginx/access.log;

    sendfile        on;

    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include sites-enabled/*;
}

nginx應用程序配置:

upstream HOA_desk_django {
    server unix:///tmp/HOA_desk.sock;
}

server {
    client_max_body_size 15M;
    listen 80;
    server_name xx.xx-xxxx.xx;
    charset utf-8;
    gzip on;
    expires off;
    access_log /var/projects/HOA_desk_nginx_access.log;
    error_log /var/projects/HOA_desk_nginx_error.log debug;

    location / {
        root /var/projects/HOA_desk;
        uwsgi_pass HOA_desk_django;
        include    uwsgi_params;
    }

    location /static/ {
        add_header X-Static hit;
        autoindex on;
        expires off;
        root /var/projects/HOA_desk/;
    }

    location /uploads/ {
            autoindex on;
            root /var/projects/HOA_desk/;
    }
}

uwsgi_params:

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_ADDR        $server_addr;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

我像這樣啟動uwsgi --uid 33 --gid 33 -y %config_file%uwsgi --uid 33 --gid 33 -y %config_file% Nginx: nginx -c /etc/nginx/nginx.conf

並輸出日志:

uwsgi:

** Starting uWSGI 1.9.16 (64bit) on [Tue Sep 17 14:31:51 2013] ***
compiled with version: 4.4.5 on 17 September 2013 12:35:39
os: Linux-2.6.26-2-xen-amd64 #1 SMP Thu Nov 25 06:39:26 UTC 2010
nodename: dstestvoip
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /var/projects
writing pidfile to /tmp/HOA_desk.pid
detected binary path: /var/projects/projects_ve/HOA_desk_ve/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
setgid() to 33
setuid() to 33
your memory page size is 4096 bytes
 *** WARNING: you have enabled harakiri without post buffering. Slow upload could be     rejected on post-unbuffered webservers ***
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /tmp/HOA_desk.sock fd 3
Python version: 2.7.3 (default, Nov 19 2012, 09:51:09)  [GCC 4.4.5]
Set PythonHome to /var/projects/projects_ve/HOA_desk_ve/
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x8f6830
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 304392 bytes (297 KB) for 2 cores
*** Operational MODE: preforking ***
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x8f6830 pid: 19656 (default     app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 19656)
spawned uWSGI worker 1 (pid: 19657, cores: 1)
spawned uWSGI worker 2 (pid: 19658, cores: 1)
*** Stats server enabled on 127.0.0.1:9191 fd: 11 ***

然后嘗試去獲取索引頁(位置/),以及..nginx的訪問和錯誤日​​志輸出:

錯誤日志:

2013/09/17 14:17:14 [alert] 19574#0: accept4() failed (38: Function not implemented)
2013/09/17 14:17:31 [info] 19574#0: *2 client closed connection while waiting for request,     client: 77.41.15.118, server: 0.0.0.0:80
2013/09/17 14:17:31 [info] 19574#0: *3 client closed connection while waiting for request,     client: 77.41.15.118, server: 0.0.0.0:80
2013/09/17 14:17:31 [info] 19574#0: *4 client closed connection while waiting for request, client: 77.41.15.118, server: 0.0.0.0:80
2013/09/17 14:17:31 [info] 19574#0: *5 client closed connection while waiting for request, client: 77.41.15.118, server: 0.0.0.0:80
2013/09/17 14:17:31 [info] 19574#0: *6 client closed connection while waiting for request, client: 77.41.15.118, server: 0.0.0.0:80
2013/09/17 14:18:14 [error] 19574#0: *1 upstream timed out (110: Connection timed out)     while reading response header from upstream, client: 77.41.15.118, server: xx.xxx-xxxxx.xx,     request: "GET / HTTP/1.1$

訪問日志:

77.41.15.118 - - [17/Sep/2013:14:18:14 +0400] "GET / HTTP/1.1" 504 584 "-" "Mozilla/5.0     (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65     Safari/537.36"

我試圖使用簡單的套接字(不是文件套接字)-都是一樣的。 此配置文件中有什么問題, uwsgi settingsnginx-uwsgi_socket mapping ??

問題在於您的內核在編譯nginx以使用它時不支持accept4()syscall(如果您的標頭公開了它,甚至uWSGI都將使用它)。 您正在使用哪個內核? 就您的系統標題而言,它可能太舊了

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM