<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: 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> <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. <glasswalk3r@yahoo.com.br><br><b><span style="font-weight: bold;">Para:</span></b> Cascavel Perl Mongers <cascavel-pm@pm.org><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>> 2010/2/18 Gabriel Sancinetti <<a ymailto="mailto:gabrielssan@yahoo.com" href="mailto:gabrielssan@yahoo.com">gabrielssan@yahoo.com</a>>:<br>> > Olá,<br>> ><br>> > Estou trabalhando com perl há alguns meses e<br>> recentemente me deparei com um<br>> > grande desafio.(pelo menos para mim).<br>> > Não sei se esta lista é a adequada, mas ja gastei 4<br>> semanas pesquisando no<br>> > google e nada de solução.<br>> ><br>> > Enfim...<br>> > Preciso reduzir o tempo de execução de um script de<br>> aproximadamente 50<br>> > minutos para 8 minutos.<br>> > 1 - Este scrip faz mais de 2 mil "chamadas externas"<br>> de sistema operacional<br>> > ( `comando` ) com timeout de 5 a 10 seguntos.<br>> > 2 - É necessário processar o STDOUT e EXIT STATUS do<br>> comando em um processo<br>> >
único não necessáriamente em sequencia.<br>> ><br>> > A solução com certeza deve implementar alguma forma<br>> de paralelismo.<br>> > Não consegui desenvolver uma forma de utilizar "open"<br>> no script. Então perdi<br>> > para uma solução de baixo nível.<br>> ><br>> > Encontrei uma solução que quase atendeu minhas<br>> expectativas, mas estou com<br>> > problemas de nível de Sistema Operacional nela.<br>> ><br>> > Recomendo que deem uma olhada no código pois agora<br>> irei descrever o problema<br>> > deste código.<br>> ><br>> > O meu problema é a ocorrencia de grande quantidade de<br>> TIMEOUTs, isto é, o<br>> > processo pai não recebe/processa as respostas dos<br>> filhos.<br>> > Separei as chamadas de sistema em grupos de 80<br>> comandos.<br>> > Quando executo o script sem o sleep tanto no processo<br>> pai quanto no
processo<br>> > filho chego q ter mais de 50% de perda de respostas,<br>> (TIMEOUT)<br>> > Conforme adiciono tempo ao sleep no processo filho,<br>> consigo reduzir a<br>> > quantidade de TIMEOUTS considerávelmente, mas longe<br>> do satizfatório.<br>> > Já quando adiciono o sleep antes do fork do processo<br>> filho a ocorrencia de<br>> > TIMEOUTs cai a menos de 0.5%, mas o tempo de<br>> execução do script se aproxima<br>> > do original (40 minutos).<br>> ><br>> > Acredito que meu problema esteja no processamento do<br>> sinal (kill), mas<br>> > também pode ser no pipe. Não acredito que seja no<br>> pipe pois não ocorre erros<br>> > no syswrite e no sysread, etc.<br>> > Já estou quase certo de que terei que refazer tudo de<br>> outro jeito, mas estou<br>> > sem idéias e preciso da opinião de pessoas mais<br>> experientes.<br>> ><br>>
> Então, agradeço desde já a atenção de vocês e<br>> espero susgestões para<br>> > corrigir este script ou para refazer de outro jeito.<br>> ><br>> > Cordialmente,<br>> ><br>> > Gabriel<br>> ><br>> > ps: Ignorem erros de sintaxe e identação pois editei<br>> o codigo no corpo da<br>> > mensagem.<br>> ><br>> ><br>> ><br>> > ________________________________<br>> > Veja quais são os assuntos do momento no Yahoo! +<br>> Buscados: Top 10 -<br>> > Celebridades - Música - Esportes<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><br>> ><br>> <br>>
<br>> <br>> -- <br>> "If you’ve never written anything thoughtful, then<br>> you’ve never had<br>> any difficult, important, or interesting thoughts. That’s<br>> the secret:<br>> people who don’t write, are people who don’t think."<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><br>> <br><br><br> ____________________________________________________________________________________<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>