PRM: Process Resource Monitor
Um dos maiores problemas dos servidores de hospedagens em Linux são os travamentos em softwares como Apache, Exim dentre outros.
Em geral, quando eles travam, se o servidor tiver um sistema auto-heal (o cPanel, por exemplo, possui um próprio), ele reinicia o serviço automaticamente e tudo volta à normalidade
.
Entretanto quando os softwares ficam lentos e travam por excesso de processamento, eles deixam o servidor tão lento que quase nenhum sistema consegue operar (devido a lentidão) e quando esse overload (excesso de processamento) ocorre, todos os serviços começam a cair por timeout (ssh, named, ftpd etc) e administrador acaba perdendo acesso ao seu servidor e tendo que solicitar ao data center um reboot do sistema e rezar de joelhos para que nenhum arquivo importante se corrompa e que as perdas de arquivos não sejam significativas.
Para corrigir esse problema deve-se utilizar algum sistema que priorize e limite os loads dos arquivos.
O PRM (Process Resource Monitor), embora seja um sistema simples, ele é aberto e gratuito e trabalha nesse sentido;
Embora ele não tenha um sistema de prioridade de processos (que é um sistema bem complexo e intrusivo ao sistema operacional) ele monitora os loads de cada processo e permite que, através de pré-definições dadas pelo administrador, ele mate o processo caso ultrapasse certa % de uso da CPU ou da memória.
A parte boa é que ele monitora o sistema constantemente e envia relatórios ao administrador quando ocorre carga extra em um ou mais processos e ele decide quando está na hora de matar o processo com base no que o administrador configurou, portanto não permite que o servidor fique off por overload; A parte ruim é que se ele mata, por exemplo, o PID do Apache, ele vai derrubar o Apache, mas não vai reiniciá-lo; Se ele matar apenas a instância do Apache com problema, provavelmente não gerará outro problema e o Apache continuará operando normalmente.
Aqui entra um sistema de auto-heal; Se você possui o cPanel, quando o Apache morrer por causa do PRM, o cPanel auto-heal automaticamente inicia o Apache; Caso você não use o cPanel, você pode procurar ou mesmo criar um sistema que verifique se os processos principais do servidor estão carregados e no caso de haver faltantes, iniciá-los;
Lembre-se que o cPanel auto-heal apenas recupera os processos nele instalados e configurados (exim, spamassassin, apache, php, dns, ftp, plugins etc); Serviços extras ficarão por conta do administrador verificar a sua atividade no sistema.
Em suma, as vantagens:
- Gratuito;
- Aberto;
- Examina processos com base nas predefinições do administrador;
- É capaz de matar os PIDs ativos;
E as desvantagens:
- Não prioriza os processos, limitando os loads quando necessário, o que seria ideal;
- Não reinicia os processos que foram derrubados;
Cada administrador deve decidir se considera ou não interessante utilizar o PRM, mas como a maioria dos servidores não usma nenhum sistema de defesa contra overload seguido de down, esta é uma ferramente simples e que se aliada ao sistema cPanel (que possui um bom sistema auto-heal), é bem eficiente.
- Onde baixar: http://www.rfxn.com/projects/process-resource-monitor/
- Como instalar:
- Extraia o arquivo.
- Dê permissão de execução para o arquivo “install.sh” e execute-o como root;
Comando: sudo chmod +x install.sh; sudo ./install.sh - Agora configure o PRM.
Os PATHs padrões são:
Install path: /usr/local/prm
Config path: /usr/local/prm/conf.prm
Executable path: /usr/local/sbin/prm
Por padrão o PRM roda a cada 5 minutos e está configurado no crontab no seguinte caminho:
/etc/cron.d/prm
- Para configurar o seu PRM use a seguinte linha de comando:
sudo vi /usr/local/prm/conf.prm - Configurações recomendadas:
- # enable user e-mail alerts [0=disabled,1=enabled] USR_ALERT=”1″
Alerta o admin sobre eventos importantes; - # e-mail address for alerts USR_ADDR=”root, seuemail@seudominio.com.br”
Define um e-mail para enviar os alertar ao root; - # check 5,10,15 minute load average. [1,2,3 respective of 5,10,15] LC=”1″
Aqui você escolhe de quanto em quanto tempo o load será averiguado. 1 para 5 minutos, 2 para 10 minutos e 3 para 15 minutos. - # min load level required to run (decimal values unsupported) MIN_LOAD=”1″
Define um índice mínimo de load no servidor para entrar em ação; - # seconds to wait before rechecking a flagged pid (pid’s noted resource # intensive but not yet killed). WAIT=”10″
Define quanto tempo (em segundos) o PRM vai esperar para verificar se determinado PID que levou kill ainda está ativo; Se estiver, mata de novo. LEIA o item abaixo. - # counter limit that a process must reach prior to kill. The counter value # increases for a process flagged resource intensive on rechecks. KILL_TRIG=”3″
Define quantas vezes ele vai verificar. Se for “3″, ele verifica três vezes em intervalos de 10 segundos (se WAIT = “10″); - # Max CPU usage readout for a process – % of all cpu resources (decimal values unsupported) MAXCPU=”35″
Porcentagem máxima que o PRM irá permitir um processo utilizar da CPU antes de matá-lo; - # Max MEM usage readout for a process – % of system total memory (decimal values unsupported) MAXMEM=”15″
Porcentagem máxima que o PRM irá permitir um processo utilizar da MEMÓRIA antes de matá-lo;
- # enable user e-mail alerts [0=disabled,1=enabled] USR_ALERT=”1″
- Dicas:
- Para desabilitar do cronjob execute este comando:
sudo /usr/local/prm/prm -j - Para habilitar o modo silencioso:
sudo /usr/local/prm/prm -q - Para habilitar o modo padrão:
sudo /usr/local/prm/prm -s
- Para desabilitar do cronjob execute este comando: