<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> </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 <danielrantunes@yahoo.com.br><br>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><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;"> Oi Eden, obrigado por responder...<br>
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> Confesso que minha administração dos PIDs não é a ideal, acredito, uso o famoso :<br><br>$SIG{CHLD}='IGNORE';<br><br> O trecho que faz o fork é este :<br><br># Eternal looping<br>my $continue=$true;<br>while ($continue){<br> unless (accept(LCLIENT,LSERVER)){<br>
$continue=$false;<br> next;<br> }<br> # set autoflush on LCLIENT socket<br> { my $ch=<br> select(LCLIENT); $|=1;<br> select($ch); }<br> # Identify client <br> my $rid=getpeername(LCLIENT);<br> unless ($rid){<br> send(LCLIENT,"Not identified connection !\r\n",0);<br> close(LCLIENT);<br> logmsg("Could not identify client.",'notice');<br> next;<br> }<br> my ($rport,$riaddr)=unpack_sockaddr_in($rid);<br> my $rip=inet_ntoa($riaddr);<br> if ($rip!~m/^$KNOW_HOSTS$/){<br> send(LCLIENT,"Not
authorized connection !\r\n",0);<br> close(LCLIENT);<br> logmsg("Not authorized client try connection to inquiry services.",'notice');<br> next;<br> }<br> logmsg("New client at $rip:$rport.",'notice');<br> # Fork process to serve multiple connections<br> RECEIVER:{<br> my $rpid;<br> if ($rpid=fork){<br> close(LCLIENT);<br> next;<br> }<br> unless (defined($rpid)){<br> if ($!==EAGAIN){<br>
sleep 1;<br> redo RECEIVER;<br> }<br> else{<br> logmsg("Could not fork process.",'emerg');<br> exit(5);<br> }<br> }<br><br> 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> 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 <edencardim@gmail.com><br>Para: Cascavel Perl Mongers <cascavel-pm@pm.org><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 <<a rel="nofollow" ymailto="mailto:danielrantunes@yahoo.com.br" target="_blank" href="mailto:danielrantunes@yahoo.com.br">danielrantunes@yahoo.com.br</a>>:<br>> Bom, a questão é a seguinte; Este meu sistema usa fork para atender<br>>
solicitações, como mencionei não dava
problemas, mas agora está simplesmente<br>> 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>> a pessoa que configurou o server<br>> colocou a responsa nas minhas costas e eu estou meio perdido, sem saber o<br>> que fazer. Dei uma pesquisada na web por possíveis limites impostos pelo<br>> sistema em termos de multiprocessamento do script e tals. Busquei saber se o<br>> fork tem algum tipo de limitação neste sentido, mas simplesmente não consigo<br>> 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>