我在尝试减少第一次请求的重新加载/等待时间时遇到了问题。
我使用的是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秒。 是我的错误吗?或者不应该使用懒惰的应用程序?如果那时,还有哪种模式适合我的情况?
感谢。 韦斯利
答案 0 :(得分:0)
您似乎没有任何配置选项来加载您的应用程序。使用wsgi-file
或module
选项导入您的应用,并设置need-app
以阻止uwsgi开始为空。
<wsgi-file>myproject/wsgi.py</wsgi-file>
或
<module>myproject.wsgi</module>
使用lazy-apps
会使每个工作人员单独加载应用程序,might not be what you want。