PRM: Process Resource Monitor

PRM: Process Resource Monitor

img-linuxUm 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.

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;
  • 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

Leave a Reply

Your email address will not be published.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Abrir chat
💬 Posso Ajudar?