Как изменить режим перезагрузки приложения uwsgi (nginx + django), чтобы уменьшить задержку перезагрузки / ожидания для первого запроса

Я столкнулся с проблемой при попытке уменьшить время перезагрузки/ожидания для первого запроса.

Я использую nginx 1.7, uwsgi 2.0.4, django 1.6. Вначале я обнаружил, что первый запрос выполняется очень медленно, и судя по журналу, это связано с тем, что приложение загружается для первого запроса. Итак, я много гуглил и пытался изменить режим перезагрузки uwsgi.

Я хотел использовать режим ленивых приложений, чтобы уменьшить задержку. Но всегда сталкивайтесь с ошибками.

конфигурация увсги:

<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>

Вот конфиг нгинкс:

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 секунд. моя конфигурация неверна? Или не следует использовать ленивые приложения? Если да, то какой еще режим подходит для моей ситуации?

Спасибо. Уэсли


person Wesley    schedule 02.09.2015    source источник
comment
Может быть, я неправильно понимаю этот режим перезагрузки. Я хочу, чтобы приложение uwsgi предварительно загружалось до того, как придет первый запрос. Кто-нибудь знает?   -  person Wesley    schedule 02.09.2015


Ответы (1)


Кажется, у вас нет никаких параметров конфигурации для загрузки вашего приложения. Используйте параметр wsgi-file или module для импорта приложения и установите < href="http://uwsgi.readthedocs.org/en/latest/Options.html#need-app" rel="nofollow">need-app, чтобы uwsgi не запускался пустым.

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

or

<module>myproject.wsgi</module>

Использование lazy-apps заставляет каждого исполнителя загружать приложение отдельно, что может быть не тем, что вам нужно .

person tuomur    schedule 02.09.2015
comment
Привет, tuomur, я включил виртуальный хост и добавил свою конфигурацию nginx. Если lazy-apps это не то, что я хочу, как избежать задержки первого запроса? - person Wesley; 02.09.2015