Resumindo o e-mail inteiro!<div>Porque o perl 2 que foi executado pelo perl 1 ainda esta rodando mesmo depois da ultima linha do perl 2 ter executado?</div><div><br></div><div>----------------------</div><div>Explicando os fatos;</div>

<div><br></div><div>Esses perls são chamão modulos,</div><div>não usa Moose nem nada muito complexo, mas são classes.</div><div>Nesses pls tem alguma coisa assim:</div><div><br></div><div>use strict;</div><div>use Boostrap; -- modulo interno.</div>

<div><br></div><div>my $config = {</div><div>  nome =&gt; &#39;aplicacao bla bla bla&#39;,</div><div>  modulo =&gt; &#39;xpto&#39;,</div><div>  config =&gt; {type=&gt;&#39;json&#39;, file =&gt; &#39;app.conf&#39;}</div><div>

};</div><div><br></div><div>my $app = new Boostrap($config);</div><div>if($app-&gt;load()){</div><div>  $app-&gt;run();</div><div>}</div><div>$app-&gt;finalize() #manda e-mail  e faz o log &#39;<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Fim da aplicacao</span>&#39;</div>

<div><br></div><div><br></div><div>--</div><div><br></div><div>Oo</div><div><br></div><div>Agora que percebi que mandei coisa a mais....</div><div>Essa parte do psql não deveria estar ai!</div><div>Acontece o seguinte...</div>

<div>Na empresa q estou,</div><div>nao pode usar o gmail,</div><div>ai digitei a desgraça do e-mail no kate,</div><div>depois fui no https e mandei por la!</div><div>como ja tava atrasado nem formatei os codes pra ficarem em monospaced.</div>

<div><br></div><div><br></div><div>Sobre a parte do  -I/projetos/libs</div><div>ainda bem que você (Daniel) reparou, pois essa parte é pra rodar na minha maquina!</div><div>Na maquina que esta em produção não existe, então, acho que não vai para por causa disso. (Afinal, ja rodou a letra 0,1,2,3)</div>

<div><br></div><div>estou em casa agora nao tem como verificar se terminou de rodar, tenho que ir pra escola!</div><div><br></div><div><br></div><div><br></div><div>Solli,</div><div>qual seria esse modulo para rodar outros scripts? separei em outro perl justamente para liberar a memoria quando o mesmo terminasse.</div>

<div><br></div><div>Os selects estão bons, o problema mesmo é na hora de subir (depois da &quot;letra&quot; F) que eu dropo os index, FK, PK e faço Copy, depois crio de novo (conforme documentação do postgres )</div><div>

 </div><div><br></div><div><br></div><div><br></div><div>Segue então o e-mail</div><div><br></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Tinha um processo aqui (deduplicação de registros do banco) que rodava com alguns milhores de registros,<br>

ai acabava acabando a RAM (4 GB, e chora, não vão por mais...),<br>O processo fazia mais ou menos assim:<br><br>Carrega do banco todos as pessoas com a letra A<br>Sobe em RAM<br>Loop num outro select nos registros com a lenta A<br>

compara com o com a RAM<br>&quot;Libera da ram&quot; (undef nas variaveis...)<br><br>E assim por diante até o Z<br><br><br>Então, eu resolvi alterar, pois depois do primeiro processamento, a maquina ja estava sem RAM.<br>

Sei que a RAM não é liberada, mas fica &#39;reservada&#39; para o proprio perl. Mas por segunraca, fiz um processamento ficar assim:<br><br>Perl contralador:<br>--&gt; perl filho fazendo processamento da letra A (sobe na ram, processa, cospe a saida)<br>

perl pai lê a saida e pega algumas variaveis e continua...<br><br><br>O processo esta funcionando (em desenv, rs!)<br><br>Mas agora, rodando com os dados Full num banco de homologação na maquina de producao (rs!)<br>O processo rodou normalmente até a letra B por exemplo (na verdade é de 0 a 15 hexadecimal) e até a &quot;letra&quot; 4 não há um grande volume.<br>

<br>O perl rodou, eu deu lida no log, e aconteceu isso:<br><br>2010-09-28 11:36:43 - Iniciando aplicacao [Importador Dedup v 1.0]...<br>2010-09-28 11:36:43 - Lendo arquivo de configuracao: conf/importador.pl.conf<br>2010-09-28 11:36:43 - Conectando-se no banco de dados nestle_teste_dedup_novo@yamaha<br>

2010-09-28 11:36:43 - Carregando id_file 1...<br>2010-09-28 11:36:43 - START: executaQuery.. letras: 4<br>2010-09-28 11:42:49 - END: executaQuery..<br>2010-09-28 11:42:49 - START: Loop DBM..<br>2010-09-28 11:42:49 - 10000<br>

2010-09-28 11:42:50 - 20000<br>...<br>2010-09-28 11:55:38 - 2870000<br>2010-09-28 11:55:52 - END: Loop DBM (READ = 2873193)..782.77837896347 segundos...<br>2010-09-28 11:57:54 - LoadDatabase: 1271 wallclock secs (235.19 usr + 19.15 sys = 254.34 CPU)<br>

2010-09-28 11:57:54 - Criando arquivo ./tmp//cadastros_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//enderecos_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//cadastros_updated.22493.copy...<br>

2010-09-28 11:57:54 - Criando arquivo ./tmp//telefones_ids_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//enderecos_ids_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//cadastros_ids_insert.22493.copy...<br>

2010-09-28 11:57:54 - Criando arquivo ./tmp//telefones_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//emails_ids_insert.22493.copy...<br>2010-09-28 11:57:54 - Criando arquivo ./tmp//emails_insert.22493.copy...<br>

2010-09-28 11:57:55 - Current val for cadastros_ids_seq is 6227684<br>2010-09-28 11:57:55 - Current val for emails_id_email_seq is 4215242<br>2010-09-28 11:57:55 - Current val for enderecos_id_endereco_seq is 5205954<br>
2010-09-28 11:57:55 - Current val for telefones_id_telefone_seq is 4908144<br>
2010-09-28 11:57:55 - Obtendo todos os registros da tb_importa_contato_clean: id_file: 1: letras 4<br>2010-09-28 11:59:58 - 10000 =&gt; id:27346<br>...<br>2010-09-28 13:00:50 - 650000 =&gt; id:1798654<br>2010-09-28 13:00:55 - Updating cadastros_ids_seq to 6312829...<br>

2010-09-28 13:00:56 - Updating emails_id_email_seq to 4220223...<br>2010-09-28 13:00:56 - Updating enderecos_id_endereco_seq to 5212173...<br>2010-09-28 13:00:56 - Updating telefones_id_telefone_seq to 4914093...<br>2010-09-28 13:00:57 - 650473 registros comparados. 3738.82161688805 segundos...<br>

2010-09-28 13:04:35 - Dedup Code: 4001 wallclock secs (587.09 usr + 26.34 sys = 613.43 CPU)<br>2010-09-28 13:04:36 - Gravando arquivo com os updates de cadastro: 41<br>2010-09-28 13:04:40 - done.<br>2010-09-28 13:04:40 - Gravando arquivo com os dedups...<br>

2010-09-28 13:06:23 - done.<br>2010-09-28 13:06:26 - Dedup write files: 111 wallclock secs ( 3.83 usr +  1.03 sys =  4.86 CPU)<br>Quantidade de erros: 0<br>Tempo de execucao: 5383 segundos<br>2010-09-28 13:06:26 - Desconectando-se dos banco de dados...<br>

2010-09-28 13:06:26 - Desconectando-se de dx0<br>2010-09-28 13:06:27 - Fim da aplicacao<br><br><br>Como mostra o log,<br>rodou em 5383 segundos, aproximadamente 1:3h<br><br>Porém,<br>o processo ta rodando até agora e o perl não soltou o pai até agora.<br>

<br>  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND<br>22493 user     20   0 5474m 3.8g  744 D   25 97.3  63:21.11 perl -I/projetos/libs <a href="http://importador_dedup_lote.pl/" target="_blank" style="color: rgb(87, 151, 176); ">importador_dedup_lote.pl</a> 7b2269645f66696c65223a2231222c226c6574726173223a5b2234225d7d<br>

<br><br><br>Não quero da um kill nele, pois quero ter certeza que rodou tudin!<br><br>Esse perl, como podem ver, chegou a usar toda a RAM, ou seja,<br>ele esta fazendo free dela até agora.<br><br><br>Como vou embora agora, (pra escola), coloquei nos novos perls um `kill -9 $$` no final, assim os proximos (se sair desse!) se matam no final<br>

<br>Minha questão é:<br>Demora tanto assim pra liberar a RAM? Já são 17:06 e nada!<br><br>O código pra chamar o filho ta assim:<br><br>        $rotinas-&gt;log(&quot;Chamando perl para processar match name com o HEXs &quot; . (join(&#39;, &#39;, @$grp)));<br>

        my $param = {<br>            id_file =&gt; $param-&gt;{id_file},<br>            letras  =&gt; $grp<br>        };<br>        my $serialize = &amp;ascii_to_hex($rotinas-&gt;fastObjToJson($param));<br><br>        my $cmd = &quot;perl -I/projetos/libs <a href="http://importador_dedup_lote.pl/" target="_blank" style="color: rgb(87, 151, 176); ">importador_dedup_lote.pl</a> $serialize 1&gt;$serialize.log 2&gt;&amp;1&quot;;<br>

        print &quot;&gt;&gt;&gt; $cmd\n\n&quot;;<br>        `$cmd`;<br>        open(X, &#39;&lt;&#39;, &quot;$serialize.log&quot;);<br>        my @logs = ();<br>        while (&lt;X&gt;){<br>            print &quot;\t$_&quot;;<br>

            push(@logs, $_);<br>        }<br>        close(X);<br>        print &quot;\n&quot;;<br><br><br>Tenho certeza que não chegou no &quot;open&quot;</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; "><br>

</span></div><div><br><div class="gmail_quote">2010/9/28 Marcio Ferreira <span dir="ltr">&lt;<a href="mailto:marciodesouzaferreira@gmail.com">marciodesouzaferreira@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Renato,<div><br></div><div>leia:</div><div><a href="http://sao-paulo.pm.org/equinocio/2010/set/20" target="_blank">http://sao-paulo.pm.org/equinocio/2010/set/20</a></div><div><a href="http://sao-paulo.pm.org/equinocio/2010/set/10" target="_blank">http://sao-paulo.pm.org/equinocio/2010/set/10</a></div>



<div><br></div><div>Eu recomendaria você começar a usar Moose para encapsular melhor as coisas e esquecer o code guidelines legado da empresa.</div><div><br></div><div>OBS**posso falar isso porque já trabalhei nessa empresa e sei bem como as coisas funcionam.</div>



<div><br>[]s,<br><br><div>@webgenes<br>Marcio Ferreira<br><br></div><div><span style="font-family:sans-serif;line-height:16px"><span style="font-size:x-small">&quot;<a style="text-decoration:none"><font color="#000000">Perl</font></a> lives as the &#39;toolbox for Unix&#39; &quot;</span></span></div>



<br>
<br><br><div class="gmail_quote"><div class="im">2010/9/28 Solli Honorio <span dir="ltr">&lt;<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>&gt;</span><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



O meu email comeu algum pedaço do email dele ? Pois não ví nem mesmo este código !<div><div></div><div class="h5"><br><br>Solli M. Honório<br><br><div class="gmail_quote">Em 28 de setembro de 2010 18:03, Daniel de Oliveira Mantovani <span dir="ltr">&lt;<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>&gt;</span> escreveu:<div>



<div></div><div><br>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">2010/9/28 Renato Santos &lt;<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>&gt;:<br>






&gt; O código pra chamar o filho ta assim:<br>
&gt;<br>
&gt;         $rotinas-&gt;log(&quot;Chamando perl para processar match name com o HEXs &quot;<br>
&gt; . (join(&#39;, &#39;, @$grp)));<br>
&gt;         my $param = {<br>
&gt;             id_file =&gt; $param-&gt;{id_file},<br>
&gt;             letras  =&gt; $grp<br>
&gt;         };<br>
&gt;         my $serialize = &amp;ascii_to_hex($rotinas-&gt;fastObjToJson($param));<br>
&gt;<br>
&gt;         my $cmd = &quot;perl -I/projetos/libs <a href="http://importador_dedup_lote.pl" target="_blank">importador_dedup_lote.pl</a> $serialize<br>
&gt; 1&gt;$serialize.log 2&gt;&amp;1&quot;;<br>
&gt;         print &quot;&gt;&gt;&gt; $cmd\n\n&quot;;<br>
&gt;         `$cmd`;<br>
&gt;         open(X, &#39;&lt;&#39;, &quot;$serialize.log&quot;);<br>
&gt;         my @logs = ();<br>
&gt;         while (&lt;X&gt;){<br>
&gt;             print &quot;\t$_&quot;;<br>
&gt;             push(@logs, $_);<br>
&gt;         }<br>
&gt;         close(X);<br>
&gt;         print &quot;\n&quot;;<br>
&gt;<br>
&gt;<br>
&gt; Tenho certeza que não chegou no &quot;open&quot;<br>
&gt;<br>
<br>
Esse foi o único pedaço do seu e-mail que eu entendi alguma coisa. Se<br>
você tem certeza que não está chegando no open<br>
é porque o `$cmd` não está terminando a execução. Cara, porque você<br>
não usa módulos ao invés de fazer isso ?<br>
<br>
&gt;<br>
&gt;<br>
&gt; Alguma sugestão?<br>
&gt;<br>
&gt; --<br>
&gt; Renato Santos<br>
&gt; <a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; SaoPaulo-pm mailing list<br>
&gt; <a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
&gt; <a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
&gt;<br>
<br>
<br>
<br>
--<br>
<a href="http://www.danielmantovani.com" target="_blank">http://www.danielmantovani.com</a><br>
<br>
&quot;If you’ve never written anything thoughtful, then you’ve never had<br>
any difficult, important, or interesting thoughts. That’s the secret:<br>
people who don’t write, are people who don’t think.&quot;<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
<br>
</blockquote></div></div></div><br><br clear="all"><div><div></div><div><br>-- <br>&quot;o animal satisfeito dorme&quot;. - Guimarães Rosa<br>
</div></div><br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org" target="_blank">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></div></div></blockquote></div><br></div>
<br>_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Renato Santos<br><a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>


</div>