Estou executando um site com suporte de banco de dados que recebe muito pouco tráfego. No entanto, uma ou duas vezes por dia, uma solicitação expirará e eu verei esse (ou um erro semelhante) no error.log
:
do Nginx
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"
Estou executando o uWSGI e não há nada relacionado a isso (que eu possa dizer) em seu arquivo de log. Eu suspeitava que poderia ser relacionado ao PostgreSQL, mas se eu verificar seu status via pg_stat_activity
não vejo nada fora do comum.
Este é o meu arquivo de configuração do 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
O servidor em que eu estou tem dois núcleos (virtualizados), então eu fiz 1 + núcleos * 2 para determinar o número de trabalhadores. Eu também usei o parâmetro buffer-size
para tentar corrigir isso, mas o erro ainda ocorre.
Não sei ao certo por onde começar a depurar isso. Tenho pouca experiência em executar o uWSGI (ou qualquer implementação WSGI do Python).