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 => 'aplicacao bla bla bla',</div><div> modulo => 'xpto',</div><div> config => {type=>'json', file => 'app.conf'}</div><div>
};</div><div><br></div><div>my $app = new Boostrap($config);</div><div>if($app->load()){</div><div> $app->run();</div><div>}</div><div>$app->finalize() #manda e-mail e faz o log '<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; ">Fim da aplicacao</span>'</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 "letra" 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>"Libera da ram" (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 'reservada' para o proprio perl. Mas por segunraca, fiz um processamento ficar assim:<br><br>Perl contralador:<br>--> 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 "letra" 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 => id:27346<br>...<br>2010-09-28 13:00:50 - 650000 => 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->log("Chamando perl para processar match name com o HEXs " . (join(', ', @$grp)));<br>
my $param = {<br> id_file => $param->{id_file},<br> letras => $grp<br> };<br> my $serialize = &ascii_to_hex($rotinas->fastObjToJson($param));<br><br> my $cmd = "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>$serialize.log 2>&1";<br>
print ">>> $cmd\n\n";<br> `$cmd`;<br> open(X, '<', "$serialize.log");<br> my @logs = ();<br> while (<X>){<br> print "\t$_";<br>
push(@logs, $_);<br> }<br> close(X);<br> print "\n";<br><br><br>Tenho certeza que não chegou no "open"</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"><<a href="mailto:marciodesouzaferreira@gmail.com">marciodesouzaferreira@gmail.com</a>></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">"<a style="text-decoration:none"><font color="#000000">Perl</font></a> lives as the 'toolbox for Unix' "</span></span></div>
<br>
<br><br><div class="gmail_quote"><div class="im">2010/9/28 Solli Honorio <span dir="ltr"><<a href="mailto:shonorio@gmail.com" target="_blank">shonorio@gmail.com</a>></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"><<a href="mailto:daniel.oliveira.mantovani@gmail.com" target="_blank">daniel.oliveira.mantovani@gmail.com</a>></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 <<a href="mailto:renato.cron@gmail.com" target="_blank">renato.cron@gmail.com</a>>:<br>
> O código pra chamar o filho ta assim:<br>
><br>
> $rotinas->log("Chamando perl para processar match name com o HEXs "<br>
> . (join(', ', @$grp)));<br>
> my $param = {<br>
> id_file => $param->{id_file},<br>
> letras => $grp<br>
> };<br>
> my $serialize = &ascii_to_hex($rotinas->fastObjToJson($param));<br>
><br>
> my $cmd = "perl -I/projetos/libs <a href="http://importador_dedup_lote.pl" target="_blank">importador_dedup_lote.pl</a> $serialize<br>
> 1>$serialize.log 2>&1";<br>
> print ">>> $cmd\n\n";<br>
> `$cmd`;<br>
> open(X, '<', "$serialize.log");<br>
> my @logs = ();<br>
> while (<X>){<br>
> print "\t$_";<br>
> push(@logs, $_);<br>
> }<br>
> close(X);<br>
> print "\n";<br>
><br>
><br>
> Tenho certeza que não chegou no "open"<br>
><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>
><br>
><br>
> Alguma sugestão?<br>
><br>
> --<br>
> Renato Santos<br>
> <a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>
><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>
<br>
<br>
<br>
--<br>
<a href="http://www.danielmantovani.com" target="_blank">http://www.danielmantovani.com</a><br>
<br>
"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."<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>"o animal satisfeito dorme". - 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>