<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">200 k = 200 mb na verdade, foi mal<br><div>&nbsp;</div>Daniel ® Antunes<br><em><font color="#007f40">profissional de informática</font></em><br><em></em><em><font color="#007f40">gnu/linux user</font></em> #238553<div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Mensagem original ----<br>De: Daniel ® Antunes &lt;danielrantunes@yahoo.com.br&gt;<br>Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br>Enviadas: Terça-feira, 15 de Julho de 2008 11:58:26<br>Assunto: [Cascavel-pm] Res:  problemas com fork<br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">&nbsp;&nbsp;&nbsp; Oi Eden, obrigado por responder...<br>&nbsp;&nbsp;&nbsp;
 Processadores chegam na média de 30% nestes horários... O server tem 5 gb e fica com 200 k livre o tempo todo, o profissional que fez a instalação fala que isto é normal. (Como o cliente fez um contrato com a empresa que forneceu o server eu não tenho muita abertura para fazer ajustes, o máximo que fiz foi anexar o serviço no /etc/init.d)<br>&nbsp;&nbsp;&nbsp; Confesso que minha administração dos PIDs não é a ideal, acredito, uso o famoso :<br><br>$SIG{CHLD}='IGNORE';<br><br>&nbsp;&nbsp;&nbsp; O trecho que faz o fork é este :<br><br># Eternal looping<br>my $continue=$true;<br>while ($continue){<br>&nbsp;&nbsp;&nbsp; unless (accept(LCLIENT,LSERVER)){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 $continue=$false;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; next;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; # set autoflush on LCLIENT socket<br>&nbsp;&nbsp;&nbsp; { my $ch=<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select(LCLIENT); $|=1;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; select($ch); }<br>&nbsp;&nbsp;&nbsp; # Identify client <br>&nbsp;&nbsp;&nbsp; my $rid=getpeername(LCLIENT);<br>&nbsp;&nbsp;&nbsp; unless ($rid){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; send(LCLIENT,"Not identified connection !\r\n",0);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; close(LCLIENT);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logmsg("Could not identify client.",'notice');<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; next;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; my ($rport,$riaddr)=unpack_sockaddr_in($rid);<br>&nbsp;&nbsp;&nbsp; my $rip=inet_ntoa($riaddr);<br>&nbsp;&nbsp;&nbsp; if ($rip!~m/^$KNOW_HOSTS$/){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; send(LCLIENT,"Not
 authorized connection !\r\n",0);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; close(LCLIENT);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logmsg("Not authorized client try connection to inquiry services.",'notice');<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; next;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; logmsg("New client at $rip:$rport.",'notice');<br>&nbsp;&nbsp;&nbsp; # Fork process to serve multiple connections<br>&nbsp;&nbsp;&nbsp; RECEIVER:{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; my $rpid;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($rpid=fork){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; close(LCLIENT);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; next;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unless (defined($rpid)){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($!==EAGAIN){<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 sleep 1;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; redo RECEIVER;<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; else{<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; logmsg("Could not fork process.",'emerg');<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit(5);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; Isto foi um dos primeiros trampos que fiz em Perl, estou reestruturando o sistema paralelamente usando best practices, muitas rotinas já foram migradas e estão rodando no novo modelo, porém, esta em especifico não.<br>&nbsp;&nbsp;&nbsp; Valeu mesmo, abraço.<br><br><br>Daniel ® Antunes<br><em><font color="#007f40">profissional de informática</font></em><br><em><font
 color="#007f40">msn</font></em> daniel@daniel-antunes.com.br<br><em></em><em><font color="#007f40"></font></em><em></em><em><font color="#007f40">mobile</font></em> +55 11 8965 2999<br><em><font color="#007f40">gnu/linux user</font></em> #238553<div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;">----- Mensagem original ----<br>De: Eden Cardim &lt;edencardim@gmail.com&gt;<br>Para: Cascavel Perl Mongers &lt;cascavel-pm@pm.org&gt;<br>Enviadas: Terça-feira, 15 de Julho de 2008 10:49:02<br>Assunto: Re: [Cascavel-pm] problemas com fork<br><br>2008/7/15 Daniel (R) Antunes &lt;<a rel="nofollow" ymailto="mailto:danielrantunes@yahoo.com.br" target="_blank" href="mailto:danielrantunes@yahoo.com.br">danielrantunes@yahoo.com.br</a>&gt;:<br>&gt;&nbsp; &nbsp;  Bom, a questão é a seguinte; Este meu sistema usa fork para atender<br>&gt;
 solicitações, como mencionei não dava
 problemas, mas agora está simplesmente<br>&gt; parando de responder em horários de pico<br><br>"Parando de responder" é um pouco vago, tente ser mais específico. A<br>memória acaba? O processador vai a mil e não dá conta?<br><br>&gt; a pessoa que configurou o server<br>&gt; colocou a responsa nas minhas costas e eu estou meio perdido, sem saber o<br>&gt; que fazer. Dei uma pesquisada na web por possíveis limites impostos pelo<br>&gt; sistema em termos de multiprocessamento do script e tals. Busquei saber se o<br>&gt; fork tem algum tipo de limitação neste sentido, mas simplesmente não consigo<br>&gt; encontrar informações que expliquem este comportamento do script.<br><br>Meu palpite é que você não está "daemonizando" e gerenciando os<br>processos corretamente. Use uma das implementações de servidor<br>disponíveis no CPAN ou um servidor comprovadamente robusto como apache<br>ou lighttpd.<br><br>--
 <br>edenc.vox.com<br>_______________________________________________<br>Cascavel-pm mailing list<br><a rel="nofollow" ymailto="mailto:Cascavel-pm@pm.org" target="_blank" href="mailto:Cascavel-pm@pm.org">Cascavel-pm@pm.org</a><br><a rel="nofollow" target="_blank" href="http://mail.pm.org/mailman/listinfo/cascavel-pm">http://mail.pm.org/mailman/listinfo/cascavel-pm</a><br></div></div></div><br>


      <hr size="1">Novos endereços, o Yahoo! que você conhece. <a rel="nofollow" target="_blank" href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.new.mail.yahoo.com/addresses">Crie um email novo</a> com a sua cara @ymail.com ou @rocketmail.com.</div></div></div><br>


      <hr size=1>Novos endereços, o Yahoo! que você conhece. <a href="http://br.rd.yahoo.com/mail/taglines/mail/*http://br.new.mail.yahoo.com/addresses">Crie um email novo</a> com a sua cara @ymail.com ou @rocketmail.com.</body></html>