Processos a mais a correr: tarefas cron e scripts presos, e como os limpar

cPanel & WHM·· 3 visualizações· 6 min de leitura

A resposta curta: o limite do número de processos conta tudo o que está vivo na conta ao mesmo tempo: pedidos PHP, tarefas cron, scripts, sessões do Terminal, aplicações Node.js ou Python. Um processo preso conta mesmo sem fazer nada, e continua a contar até alguém o terminar. Os culpados habituais são tarefas cron que se sobrepõem e scripts que ficam à espera para sempre. Vêem-se no Terminal do cPanel, terminam-se com kill e evitam-se com flock e timeout.

Sinais de processos a mais

O que vê Causa provável
O gráfico de processos do «Uso de recursos» encosta ao limite, com a CPU baixa Processos parados: tarefas cron sobrepostas, scripts à espera de uma API que não responde
O número de processos cresce ao longo do dia e nunca desce Uma tarefa cron que arranca outra vez antes de a anterior acabar, e nenhuma acaba
Uma tarefa cron deixou de correr ou de enviar o e-mail Não há lugar para arrancar um processo novo, ou a anterior ainda está a correr. Ver também uma tarefa cron que não corre
O Terminal não abre, ou diz fork: Resource temporarily unavailable A conta está no limite de processos: não consegue arrancar nem a própria linha de comandos
Erros 508 no site sem picos de visitas Processos presos ocupam os lugares que eram dos visitantes
Scripts lançados à mão há dias, com nohup, ainda vivos Importações ou testes esquecidos depois de fechar a sessão

Encontrar e limpar os processos presos

1 Abra o Terminal no cPanel (o Terminal do cPanel) e liste os seus processos com a idade de cada um: ps -u "$(whoami)" -o pid,etime,args. A coluna ELAPSED diz há quanto tempo cada um está vivo. Só vê os seus, nunca os de outras contas.
2 Identifique os presos: o mesmo script repetido muitas vezes, ou um script com horas ou dias de idade quando devia durar minutos. As linhas que dizem só lsphp, sem nome de ficheiro, são do servidor web a servir o site: deixe-as.
3 Pense antes de terminar. Se é uma importação, uma cópia ou uma escrita na base de dados, terminá-la a meio pode deixar os dados a meio. Confirme que tem uma cópia recente, ou que pode repetir a tarefa do início.
4 Termine-o com o número da primeira coluna (o PID): kill 12345. Se ao fim de alguns segundos ainda lá está, kill -9 12345. Vários do mesmo script: veja primeiro quais apanha com pgrep -af relatorio.php, e só depois pkill -f relatorio.php.
5 Impeça que volte a acontecer. Na tarefa cron, ponha flock -n à frente do comando (se a anterior ainda corre, a nova nem arranca) e timeout com um tempo máximo (passado esse tempo, o script é terminado). Por exemplo, troque CONTA pelo nome da sua conta: /usr/bin/flock -n /home/CONTA/tmp/relatorio.lock /usr/bin/timeout 15m /usr/local/bin/php -q /home/CONTA/scripts/relatorio.php
6 Ponha tempos máximos dentro do código nas chamadas a outros serviços (no cURL do PHP, as opções de timeout), para um script não ficar à espera para sempre de uma resposta que não vem.
7 Reveja a frequência em Tarefas Cron (Cron Jobs): uma tarefa não deve correr mais vezes do que o tempo que demora a acabar. Exemplos de horários: tarefas agendadas (cron).

Optimizar ou fazer upgrade?

Situação Optimizar ou fazer upgrade?
Processos presos, ou o mesmo script repetido Optimizar. Limpar e pôr flock e timeout. Um plano maior só dava mais lugares para encher.
Tarefas cron de minuto a minuto que demoram mais de um minuto Optimizar. Espaçar e impedir a sobreposição.
Scripts à espera de APIs externas Optimizar. Tempos máximos nas chamadas.
Tudo limpo, e os processos são pedidos reais do site nas horas de mais clientes Fazer upgrade.
Precisa de processos de fundo sempre vivos (filas, robôs de conversa, automações, workers) VPS ou Cloud. Na hospedagem partilhada esses processos competem com o site: hospedagem partilhada ou VPS.

Planos maiores

Cada plano acima permite mais processos ao mesmo tempo: de 60 no Pro a 200 no Business Ultra (tabela abaixo). O da sua conta é a linha do limite no «Uso de recursos». O upgrade faz-se no Meu Interweb, paga só a diferença até à renovação, e o site, os e-mails e os ficheiros ficam onde estão: como fazer upgrade do seu plano. Qual é o plano seguinte ao seu: que plano vem a seguir.

Plano Número de processos (NPROC)
Pro 60
Plus 80
Ultra 100
Business Pro 120
Business Plus 150
Business Ultra 200

Os nossos avisos: quando a conta chega a 75%, 85% e 95% do limite de um recurso do plano, recebe um e-mail com todos os recursos da conta, cada um com o limite e a percentagem que usa, e os planos de upgrade (entre 75 e 85%, de 15 em 15 dias; entre 85 e 95%, de 7 em 7 dias; a partir de 95%, de 3 em 3 dias). Se vários recursos estão perto do limite, vêm todos no mesmo e-mail. O limite é 100%. Acima dele a conta pode ser suspensa, e avisamos sempre na véspera. Para a reactivar, faça upgrade (a conta reactiva sozinha logo a seguir) ou peça 24 horas para resolver no link do e-mail: a conta fica activa 24 horas e, se no fim continuar acima do limite, volta a ser suspensa logo (as 24 horas pedem-se uma vez a cada 7 dias). Se o uso voltar a ficar abaixo do limite, a conta volta a ficar activa sozinha. O que cada aviso quer dizer está em os avisos de uso de 75%, 85% e 95%.

Nunca escreva kill -9 -1 nem pkill -u com o nome da sua conta. Terminam todos os seus processos de uma vez, incluindo o próprio Terminal e as cópias ou importações que estavam a meio. Termine um a um, pelo PID, depois de ver o que é.
Quer saber se uma tarefa cron acabou? Ponha na última linha do script uma escrita da data num ficheiro de registo. Se a data não aparece, a tarefa não chegou ao fim, e o processo pode estar preso: uma tarefa cron que não corre ou não envia nada.

O Terminal não abre, ou os processos voltam logo a seguir? Diga-nos o domínio e a hora, e vemos consigo.

Abrir pedido de suporte

VEJA TAMBÉM

Os limites que não vêm no anúncio: inodes, processos e memória

Uma tarefa cron que não corre ou não envia nada: lista de verificação

Terminal no cPanel: linha de comandos sem instalar nada

Ver o consumo do seu site em tempo real por SSH

Bater muitas vezes no limite de processos de entrada: quando optimizar e quando fazer upgrade

Como fazer upgrade ou downgrade do seu plano

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
Esta resposta foi útil? A sua resposta ajuda-nos a melhorar este artigo.