[Cascavel-pm] Res: problemas com fork
Daniel ® Antunes
danielrantunes em yahoo.com.br
Terça Julho 15 07:58:26 PDT 2008
Oi Eden, obrigado por responder...
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)
Confesso que minha administração dos PIDs não é a ideal, acredito, uso o famoso :
$SIG{CHLD}='IGNORE';
O trecho que faz o fork é este :
# Eternal looping
my $continue=$true;
while ($continue){
unless (accept(LCLIENT,LSERVER)){
$continue=$false;
next;
}
# set autoflush on LCLIENT socket
{ my $ch=
select(LCLIENT); $|=1;
select($ch); }
# Identify client
my $rid=getpeername(LCLIENT);
unless ($rid){
send(LCLIENT,"Not identified connection !\r\n",0);
close(LCLIENT);
logmsg("Could not identify client.",'notice');
next;
}
my ($rport,$riaddr)=unpack_sockaddr_in($rid);
my $rip=inet_ntoa($riaddr);
if ($rip!~m/^$KNOW_HOSTS$/){
send(LCLIENT,"Not authorized connection !\r\n",0);
close(LCLIENT);
logmsg("Not authorized client try connection to inquiry services.",'notice');
next;
}
logmsg("New client at $rip:$rport.",'notice');
# Fork process to serve multiple connections
RECEIVER:{
my $rpid;
if ($rpid=fork){
close(LCLIENT);
next;
}
unless (defined($rpid)){
if ($!==EAGAIN){
sleep 1;
redo RECEIVER;
}
else{
logmsg("Could not fork process.",'emerg');
exit(5);
}
}
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.
Valeu mesmo, abraço.
Daniel ® Antunes
profissional de informática
msn daniel em daniel-antunes.com.br
mobile +55 11 8965 2999
gnu/linux user #238553
----- Mensagem original ----
De: Eden Cardim <edencardim em gmail.com>
Para: Cascavel Perl Mongers <cascavel-pm em pm.org>
Enviadas: Terça-feira, 15 de Julho de 2008 10:49:02
Assunto: Re: [Cascavel-pm] problemas com fork
2008/7/15 Daniel (R) Antunes <danielrantunes em yahoo.com.br>:
> Bom, a questão é a seguinte; Este meu sistema usa fork para atender
> solicitações, como mencionei não dava problemas, mas agora está simplesmente
> parando de responder em horários de pico
"Parando de responder" é um pouco vago, tente ser mais específico. A
memória acaba? O processador vai a mil e não dá conta?
> a pessoa que configurou o server
> colocou a responsa nas minhas costas e eu estou meio perdido, sem saber o
> que fazer. Dei uma pesquisada na web por possíveis limites impostos pelo
> sistema em termos de multiprocessamento do script e tals. Busquei saber se o
> fork tem algum tipo de limitação neste sentido, mas simplesmente não consigo
> encontrar informações que expliquem este comportamento do script.
Meu palpite é que você não está "daemonizando" e gerenciando os
processos corretamente. Use uma das implementações de servidor
disponíveis no CPAN ou um servidor comprovadamente robusto como apache
ou lighttpd.
--
edenc.vox.com
_______________________________________________
Cascavel-pm mailing list
Cascavel-pm em pm.org
http://mail.pm.org/mailman/listinfo/cascavel-pm
Novos endereços, o Yahoo! que você conhece. Crie um email novo com a sua cara @ymail.com ou @rocketmail.com.
http://br.new.mail.yahoo.com/addresses
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20080715/9b5862b1/attachment.html>
Mais detalhes sobre a lista de discussão Cascavel-pm