如何更改uwsgi(nginx + django)应用重装模式以减少第一次请求的重载/等待延迟

时间:2015-09-02 06:21:08

标签: python django nginx uwsgi

我在尝试减少第一次请求的重新加载/等待时间时遇到了问题。

我使用的是nginx 1.7,uwsgi 2.0.4,django 1.6。 在开始时,我发现第一个请求非常慢,并且从日志中,由于第一个请求加载了应用程序。 所以,我搜索了很多并试图改变uwsgi重新加载模式。

我很想使用lazy-app模式来减少延迟。但是,总是遇到错误。

uwsgi config:

<uwsgi>
  <socket>/var/run/uwsgi.socket</socket>
  <listen>100</listen>
  <master>true</master>
  <vhost>true</vhost>
  <no-site>true</no-site>
  <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>
  <processes>8</processes>
  <profiler>true</profiler>
  <memory-report>true</memory-report>
  <enable-threads>true</enable-threads>
  <logdate>true</logdate>
  <lazy-apps>true</lazy-apps>
  <touch-chain-reload>true</touch-chain-reload>
  <limit-as>6048</limit-as>
  <daemonize>/home/django.log</daemonize>
</uwsgi>

这是nginx配置:

server {
        listen  80;
        server_name xxx.com;
        location / {
            uwsgi_pass   unix:///var/run/uwsgi.socket;
            include     uwsgi_params;
            uwsgi_param UWSGI_CHDIR /home/test;
            uwsgi_param UWSGI_SCRIPT wsgi;
           access_log  off;
        }
        location /static/ {
        root            /home/test/;
        access_log      off;
        log_not_found   off;
        autoindex on;
    }
 }

但似乎没有改变,请登录:

[root@localhost ~]# tail -f /home/django.log
Wed Sep  2 11:45:55 2015 - spawned uWSGI worker 7 (pid: 23818, cores: 1)
Wed Sep  2 11:45:55 2015 - spawned uWSGI worker 8 (pid: 23819, cores: 1)
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***
Wed Sep  2 11:45:55 2015 - *** no app loaded. going in full dynamic mode ***

仍然应用仅在第一个请求到来时加载并且延迟增加到将近7秒。 是我的错误吗?或者不应该使用懒惰的应用程序?如果那时,还有哪种模式适合我的情况?

感谢。 韦斯利

1 个答案:

答案 0 :(得分:0)

您似乎没有任何配置选项来加载您的应用程序。使用wsgi-filemodule选项导入您的应用,并设置need-app以阻止uwsgi开始为空。

<wsgi-file>myproject/wsgi.py</wsgi-file>

<module>myproject.wsgi</module>

使用lazy-apps会使每个工作人员单独加载应用程序,might not be what you want