<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Alceu,<br><br>O comando executado pode ser qualquer script da libexec do Nagios. <br>Em 99% dos casos check_nrpe ou check_nt.<br></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br>Pretendo monitorar hosts atualmente monitorados pelo nagios atráves de um sistema proprietário.<br>A intenção é integrar o legado com o novo para que não seja necessário "intervir" em hosts de clientes para instalação de um novo serviço de monitoramento.<br>O novo sistema propriétário possui uma inteface em Perl para geração de eventos. Então executo a linha de comando e manipulo o resultado no script.para gerar ou limpar o evento no novo sistema.<br><br>Para aqueles que não conhecem Nagios:&nbsp; Não existe a possibilidade do comando não retornar resultado
 pois o comando já tem o próprio timeout.<br><br>Quanto ao "ForkManager" foi a minha primeira tentativa sem sucesso. Não me lembro por qual motivo o abandonei, mas com certeza está relacionado à necessidade aguardar a execução de multiplos processos filhos e processar seus resultados assincronamente.<br>Se é possível, eu não me lembro.<br><br>Att.<br><br>Gabriel<br><br><br>&nbsp;<br><br><div style="font-family: arial,helvetica,sans-serif; font-size: 13px;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">De:</span></b> Alceu R. de Freitas Jr. &lt;glasswalk3r@yahoo.com.br&gt;<br><b><span style="font-weight: bold;">Para:</span></b> Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br><b><span style="font-weight: bold;">Enviadas:</span></b> Quinta-feira, 18 de Fevereiro de 2010 16:27:18<br><b><span style="font-weight: bold;">Assunto:</span></b> Re: [Cascavel-pm] Problema com pipe<br></font><br>Olá Gabriel,<br><br>Que
 comando é esse que você chama externamente? Por que algumas vezes você recebe timeout? Simplesmente porque o processo externo que você está executando demora?<br><br>Não é possível você substituir esse processo externo por código Perl equivalente? Você evitaria um fork adicional e possivelmente tornaria mais fácil identificar erros.<br><br>Já executou um profile do seu programa para identificar quais áreas tomam mais tempo de execução do seu programa? Eu escrevi um artigo sobre isso no perl.org.br.<br><br>Dê uma olhada no Parallel::ForkManager (<a href="http://search.cpan.org/%7Edlux/Parallel-ForkManager-0.7.5/ForkManager.pm" target="_blank">http://search.cpan.org/~dlux/Parallel-ForkManager-0.7.5/ForkManager.pm</a>) e veja se ele não te ajuda.<br><br>Se o hardware que você não der conta do recado mesmo você tendo otimizado o código, verifique se você não pode usar o OpenMosix para distribuir a carga. Mas só vale a pena se seu
 processo não realizar muito I/O.<br><br>Abraços,<br>Alceu<br><br>&gt; 2010/2/18 Gabriel Sancinetti &lt;<a ymailto="mailto:gabrielssan@yahoo.com" href="mailto:gabrielssan@yahoo.com">gabrielssan@yahoo.com</a>&gt;:<br>&gt; &gt; Olá,<br>&gt; &gt;<br>&gt; &gt; Estou trabalhando com perl há alguns meses e<br>&gt; recentemente me deparei com um<br>&gt; &gt; grande desafio.(pelo menos para mim).<br>&gt; &gt; Não sei se esta lista é a adequada, mas ja gastei 4<br>&gt; semanas pesquisando no<br>&gt; &gt; google e nada de solução.<br>&gt; &gt;<br>&gt; &gt; Enfim...<br>&gt; &gt; Preciso reduzir o tempo de execução de um script de<br>&gt; aproximadamente 50<br>&gt; &gt; minutos para 8 minutos.<br>&gt; &gt; 1 - Este scrip faz mais de 2 mil "chamadas externas"<br>&gt; de sistema operacional<br>&gt; &gt; ( `comando` ) com timeout de 5 a 10 seguntos.<br>&gt; &gt; 2 - É necessário processar o STDOUT e EXIT STATUS do<br>&gt; comando em um processo<br>&gt; &gt;
 único não necessáriamente em sequencia.<br>&gt; &gt;<br>&gt; &gt; A solução com certeza deve implementar alguma forma<br>&gt; de paralelismo.<br>&gt; &gt; Não consegui desenvolver uma forma de utilizar "open"<br>&gt; no script. Então perdi<br>&gt; &gt; para uma solução de baixo nível.<br>&gt; &gt;<br>&gt; &gt; Encontrei uma solução que quase atendeu minhas<br>&gt; expectativas, mas estou com<br>&gt; &gt; problemas de nível de Sistema Operacional nela.<br>&gt; &gt;<br>&gt; &gt; Recomendo que deem uma olhada no código pois agora<br>&gt; irei descrever o problema<br>&gt; &gt; deste código.<br>&gt; &gt;<br>&gt; &gt; O meu problema é a ocorrencia de grande quantidade de<br>&gt; TIMEOUTs, isto é, o<br>&gt; &gt; processo pai não recebe/processa as respostas dos<br>&gt; filhos.<br>&gt; &gt; Separei as chamadas de sistema em grupos de 80<br>&gt; comandos.<br>&gt; &gt; Quando executo o script sem o sleep tanto no processo<br>&gt; pai quanto no
 processo<br>&gt; &gt; filho chego q ter mais de 50% de perda de respostas,<br>&gt; (TIMEOUT)<br>&gt; &gt; Conforme adiciono tempo ao sleep no processo filho,<br>&gt; consigo reduzir a<br>&gt; &gt; quantidade de TIMEOUTS considerávelmente, mas longe<br>&gt; do satizfatório.<br>&gt; &gt; Já quando adiciono o sleep antes do fork do processo<br>&gt; filho a ocorrencia de<br>&gt; &gt; TIMEOUTs cai a menos de 0.5%, mas o tempo de<br>&gt; execução do script se aproxima<br>&gt; &gt; do original (40 minutos).<br>&gt; &gt;<br>&gt; &gt; Acredito que meu problema esteja no processamento do<br>&gt; sinal (kill), mas<br>&gt; &gt; também pode ser no pipe. Não acredito que seja no<br>&gt; pipe pois não ocorre erros<br>&gt; &gt; no syswrite e no sysread, etc.<br>&gt; &gt; Já estou quase certo de que terei que refazer tudo de<br>&gt; outro jeito, mas estou<br>&gt; &gt; sem idéias e preciso da opinião de pessoas mais<br>&gt; experientes.<br>&gt; &gt;<br>&gt;
 &gt; Então, agradeço desde já a atenção de vocês e<br>&gt; espero susgestões para<br>&gt; &gt; corrigir este script ou para refazer de outro jeito.<br>&gt; &gt;<br>&gt; &gt; Cordialmente,<br>&gt; &gt;<br>&gt; &gt; Gabriel<br>&gt; &gt;<br>&gt; &gt; ps: Ignorem erros de sintaxe e identação pois editei<br>&gt; o codigo no corpo da<br>&gt; &gt; mensagem.<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt;<br>&gt; &gt; ________________________________<br>&gt; &gt; Veja quais são os assuntos do momento no Yahoo! +<br>&gt; Buscados: Top 10 -<br>&gt; &gt; Celebridades - Música - Esportes<br>&gt; &gt; _______________________________________________<br>&gt; &gt; Cascavel-pm mailing list<br>&gt; &gt; <a ymailto="mailto:Cascavel-pm@pm.org" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>&gt; &gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt; &gt;<br>&gt; <br>&gt;
 <br>&gt; <br>&gt; -- <br>&gt; "If you’ve never written anything thoughtful, then<br>&gt; you’ve never had<br>&gt; any difficult, important, or interesting thoughts. That’s<br>&gt; the secret:<br>&gt; people who don’t write, are people who don’t think."<br>&gt; _______________________________________________<br>&gt; Cascavel-pm mailing list<br>&gt; <a ymailto="mailto:Cascavel-pm@pm.org" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br>&gt; <a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br>&gt; <br><br><br>&nbsp; &nbsp; &nbsp; ____________________________________________________________________________________<br>Veja quais são os assuntos do momento no Yahoo! +Buscados<br><a href="http://br.maisbuscados.yahoo.com" target="_blank">http://br.maisbuscados.yahoo.com</a><br>_______________________________________________<br>Cascavel-pm mailing list<br><a
 ymailto="mailto:Cascavel-pm@pm.org" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a href="http://mail.pm.org/mailman/listinfo/cascavel-pm" target="_blank">http://mail.pm.org/mailman/listinfo/cascavel-pm</a></div></div>
</div><br>


      <hr size=1>Veja quais são os assuntos do momento no Yahoo! + Buscados: <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/">Top 10</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/celebridades/">Celebridades</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/m%C3%BAsica/">Música</a> - <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.maisbuscados.yahoo.com/esportes/">Esportes</a></body></html>