Como depurar esse Nginx para o tempo limite do uWSGI?

4

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

    
por skyler 14.06.2013 / 19:11

1 resposta

2

A opção que aciona o tempo limite (em nginx) é

link

o padrão é 60 segundos, portanto, se você solicitar não gera saída nesse intervalo de tempo, o nginx fechará a conexão.

Se você não vir erro no uWSGI (uma parte eu suponho do "pipe quebrado" como nginx desconectado) eu investigaria porque a geração é tão lenta

    
por 15.06.2013 / 06:35