Olá, pessoal!<br><br>Estou tendo um problema de memória com scripts em Perl.<br>Alguém aí teve algum problema parecido?<br><br>Tenho um "pequeno" sistema que precisa executar vários scripts Perl em paralelo.<br>Então existe um script Perl "chefe" que fica responsável por executar eles com parâmetros diferentes usando system().<br>
<br>O sistema acessa vários bancos de dados e a depender do banco, da tabela e do campo ele executa um módulo específico.<br>Uso o MySQL em outra máquina para não abusar da memória.<br>
<br>Script-chefe:<br><br>while ( my $i < $execucoes ) # são execuções limitadas, mas por enquanto são 60<br>{<br> system( './<a href="http://script.pl">script.pl</a> $parametro1 > /dev/null & ' );<br>
}<br><br>Dentro do script é carregado um módulo usando require assim:<br><br>require $ARGV[ 0 ].".pm";<br><br>Funciona tudo certo, se rodo 20, funciona tudo normal e eles ocupam 158 MB de memória.<br>Se rodo 40, eles ocupam 316 MB de memória além da memória usada pelo sistema.<br>
Me parece que cada script carregado usa 8 MB em média. (Isso é possível/normal?)<br>Quando uso 60, nem todos os scripts são executados.<br>Existe alguma maneira de executar um script otimizando o uso de memória ou<br>vou ter que reavaliar o código?<br>
Já revisei o código e eliminei arrays, variáveis de conexões com bancos desnecessárias.<br>Existe algo mais que eu possa fazer?<br><br>Abraços,<br><br>Tom<br>