[SP-pm] Threads em Perl

Guilherme Luis Eberhardt guilherme.eberhardt at gmail.com
Tue Feb 3 08:54:25 PST 2009


Pessoal, boa tarde!

 

Estou desenvolvendo um servidor e cliente em Perl para comunicação via
socket.

Para agilizar o processo estou utilizando thread no servidor.

 

Meu sistema operacional é: HP-UX B.11.23 U ia64

Perl: 5.8.9

 

Meu problema é que para cada requisição que faço do cliente para o servidor,
a quantidade de uso de páginas aumenta mesmo quando a thread terminou sua
execução.

(Ou seja, o consumo de memória do servidor aumenta)

Não sei se está ficando algum lixo de memória.

O estranho é que o mesmo código sem thread o consumo de memória do servidor
fica sempre igual.

 

O comando que estou utilizando para monitorar o consumo de memória é:
kmeminfo -u

 

Antes eu utiliza a função de thread “detach” agora estou usando o “join”.

 

Alguém pode me ajudar?

 

Obrigado.

 

Segue o código que estou usando para o servidor:

use threads;

use IO::Socket;

use Getopt::Long;

&GetOptions(   "servidor:s"    => \$pServidor,

"porta:s"       => \$pPorta,

                               "comando:s"     => \$pComando,

                               "log:s"         => \$pLog,

                               );

$sock = new IO::Socket::INET ( LocalAddr => "$pServidor",

                                                               LocalPort =>
"$pPorta",

                                                               Proto =>
'tcp',

                                                               Listen => 5,

                                                               Reuse => 0)
or die ("problem binding to socket.");

 

while ($client = $sock->accept()) {

        $client->autoflush(1);

        $sockthread = threads->new(\&serviceClient,$client,$cipher);

        $sockthread->join;

        undef $client;

        undef $sockthread;

}

############################################################################
####

sub serviceClient {

        $cliente = $_[0];

        $msg = <$cliente>;

        $msg=~s/\\\{n\}/\n/g;

        $w1 = `$pComando $msg`;

        print $client "$w";

        $client->shutdown(2);

        undef $_[0];

        undef $cliente;

        undef $msg;

        undef $w1;

        return;

}

############################################################################
####

 

Guilherme Luis Eberhardt
P Antes de imprimir, pense em  sua responsabilidade ambiental !

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090203/d70eed0e/attachment.html>


More information about the SaoPaulo-pm mailing list