systemd iniciou processo uwsgi desliga depois de um tempo

3

Então eu escrevi este simples script de serviço systemd: -

[Unit]
Description=uwsgi server script

[Service]
User=web
Group=web
WorkingDirectory=/var/www/prod/myproject/releases/current
ExecStart=/bin/bash -c 'source ~/.bash_profile; workon myproject; uwsgi --ini /var/www/prod/myproject/releases/current/myproject/uwsgi_prod.ini'

[Install]
WantedBy=multi-user.target

que funciona bem - inicia e eu posso ver meus processos uwsgi em htop .

No entanto, ele inexplicavelmente desliga depois de ficar ocioso por 5 minutos.

Se eu iniciar este processo manualmente no console bash executando, como usuário da web: -

source ~/.bash_profile
workon myproject
uwsgi --ini /var/www/prod/myproject/releases/current/myproject/uwsgi_prod.ini

meu processo não morre depois de ficar ocioso.

Qual poderia ser o problema?

    
por Calvin Cheng 18.12.2012 / 04:39

2 respostas

2

Resolveu após conversar com outro desenvolvedor no canal systemd .

Adicionar isso na seção [Service] resolveu o problema: -

Type=forking
PIDFile=/tmp/project.pid-3030

O motivo é simples. Se Type não for declarado, o padrão será Type=simple , que espera que o processo NÃO seja bifurcado assim quando bash sair, systemd achar que o processo está morto e derrubar o cgroup.

    
por 18.12.2012 / 05:27
1

Como você observou, é necessário especificar o Type caso contrário, systemd será padronizado para Type=simple .

No entanto, os documentos oficiais do uWSGI sobre o gerenciamento do uWSGI com systemd usam Type=notify em vez de Type=forking , porque não há necessidade de especificar o PIDFile .

    
por 01.10.2015 / 07:00

Tags