Eu escrevi um webapp no Django que eu hospedo sob o Apache 2.4 usando mod_wsgi.
À primeira vista, funciona bem. No entanto, quando o processo do Apache está em execução há algum tempo, o webapp começa a responder com erros 503. Você pode passar algumas vezes depois de F5'ing muito.
A coisa chata é que eu não tenho nada relacionado a isso no meu Apache error.log em tudo , então eu não sei onde começar a depurar isso. Meu único lead é o erro exibido no navegador: 503 Service Unavailable
.
Outros sites (PHP) não são afetados. Reiniciar o servidor Apache resolve o problema de forma confiável.
Minha configuração do Apache para esta webapp:
WSGIDaemonProcess app python-path=/opt/app home=/opt/app
WSGIProcessGroup app
WSGIScriptAlias /app /opt/app/wsgi.py
Eu encontrei este mas Eu não acho que esse é o problema porque os sockets já estão colocados em /var/run/apache2/
no meu caso (não no "diretório de log do apache"). Este diretório é legível para os outros. Os próprios soquetes possuem o modo 700
, mas possuem o proprietário correto ( www-data
).
Alguma idéia?
EDITAR:
Percebi que quando o problema ocorre e eu reinicio o Apache para corrigi-lo, o Apache demora bastante para sair. No log de erros, encontrei estas mensagens:
[Sun Jun 25 14:14:18.935566 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21761 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:18.935637 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21812 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:20.937578 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21761 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:20.937640 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21812 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:22.939827 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21761 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:22.939893 2017] [core:warn] [pid 374:tid 140587055682752] AH00045: child process 21812 still did not exit, sending a SIGTERM
[Sun Jun 25 14:14:24.942034 2017] [core:error] [pid 374:tid 140587055682752] AH00046: child process 21761 still did not exit, sending a SIGKILL
[Sun Jun 25 14:14:24.942176 2017] [core:error] [pid 374:tid 140587055682752] AH00046: child process 21812 still did not exit, sending a SIGKILL
Portanto, pelo que parece, o problema pode ser causado por threads (WSGI?) que estão suspensos? Como faço para depurar isso?
Tags python django apache-2.4 mod-wsgi