Как мне отладить этот Nginx до тайм-аута uWSGI?
Я использую веб-сайт, поддерживаемый базой данных, который получает очень мало трафика. Однако, один или два раза в день, запрос будет остановлен, и я увижу эту (или похожую) ошибку в Nginx error.log
:
2013/06/13 18:32:40 [error] 16723#0: *27796 upstream timed out (110: Connection timed out)
while reading response header from upstream, client: 199.71.215.214, server:
app.mypythonwebapp.com, request: "POST /api?submit_staker_response HTTP/1.1", upstream:
"uwsgi://unix:/var/run/uwsgi/app.mypythonwebapp.com-uwsgi.sock", host:
"app.mypythonwebapp.com", referrer:
"https://app.mypythonwebapp.com/survey/5/791/70ea73eb9a489f2dead804a95c400ab2"
Я использую uWSGI, и в его лог-файле нет ничего общего с этим (что я могу сказать). Я подозревал, что это может быть связано с PostgreSQL, но если я проверю его статус через pg_stat_activity
Я не вижу ничего необычного.
Это мой конфигурационный файл uWSGI YAML:
uwsgi:
socket: /var/run/uwsgi/%n-uwsgi.sock
workers: 5
buffer-size: 32768
callable: app
wsgi-file: /opt/sites/app.mypythonwebapp.com/run.py
virtualenv: /opt/virtualenv/app.mypythonwebapp.com
pythonpath: /opt/sites/app.mypythonwebapp.com
Сервер, на котором я работаю, имеет два (виртуализированных) ядра, поэтому я сделал 1 + ядер *2, чтобы определить количество работников. Я также поднял buffer-size
параметр, чтобы попытаться исправить это, но ошибка все еще происходит.
Я не уверен, где начать отлаживать это. У меня мало опыта работы с uWSGI (или любой реализацией Python WSGI).
1 ответ
Опция запуска тайм-аута (в nginx)
http://wiki.nginx.org/HttpUwsgiModule
по умолчанию его значение составляет 60 секунд, поэтому, если ваш запрос не сгенерирует вывод в этом временном интервале, nginx закроет соединение.
Если вы не видите ошибку в uWSGI (часть, которую я полагаю из "сломанной трубы" при отключении nginx), я бы выяснил, почему генерация такая медленная