id_file | id_layout | md5sum | file_name | time_start | time_end | validated | file_path | file_size | created_at | created_by | updated_at | updated_by | loaded | rows_ok | rows_ignored | clean | imported | imported_rows | imported_status | idorigem | reutilizar | query<br>
---------+-----------+----------------------------------+--------------------------------------------------------------------------+------------+----------+-----------+-----------+-----------+----------------------------+------------+------------+------------+--------+---------+--------------+-------+----------+---------------+----------------------------------------------------------------------------------------+----------+------------+-------<br>
3 | | changeme_too | /dados/work/OUT_PS_20100813_3.txt.conv.utf8 | | | t | | | 2010-08-19 11:27:06.808689 | 1 | | | t | | | t | f | | cadastros:1106160, emails:839833, enderecos:1063774, telefones:681226, updates:34815 | 2 | t | f<br>
: Registros lidos: 1211132<br>
4 | | 7e42935177faec642955fe13b17a8291 | /dados/work/OUT_F5_20100814_1.txt.conv.utf8 | | | t | | | 2010-08-20 11:03:36.228324 | 1 | | | t | | | t | f | | cadastros:754023, emails:919402, enderecos:587103, telefones:669483, updates:55941 | 3 | t | f<br>
: Registros lidos: 1379811<br>
5 | | f49957319ac7b1c0839d1f7d19ce8ab2 | /dados/work/OUT_F5_20100814_2.txt.conv.utf8 | | | t | | | 2010-08-20 14:46:31.645924 | 1 | | | t | | | t | f | | cadastros:569141, emails:840611, enderecos:540197, telefones:749958, updates:40869 | 3 | t | f<br>
: Registros lidos: 1351801<br>
6 | | e4584ab99210780c0e846a28499692df | /dados/work/OUT_PV_20100821.txt.conv.utf8 | | | t | | | 2010-08-23 15:55:18.155197 | 1 | | | t | | | t | f | | cadastros:236929, emails:172333, enderecos:292073, telefones:316859, updates:661549 | 1 | t | f<br>
: Registros lidos: 965113<br>
8 | | f10cd34b302735c3265dc3479e405688 | /dados/work/OUT_ERROS_F5_20100829.txt.conv.utf8 | | | t | | | 2010-08-30 10:19:46.501998 | 1 | | | t | | | t | f | | cadastros:59, emails:78, enderecos:46, telefones:50, updates:1 | 3 | t | f<br>
: Registros lidos: 98<br>
9 | | f28e5d8f4eeadf1ddcdbf33ecb06036f | /dados/work/OUT_ERROS_PS_20100829.txt.conv.utf8 | | | t | | | 2010-08-30 10:21:10.03357 | 1 | | | t | | | t | f | | cadastros:9, emails:9, enderecos:0, telefones:0, updates:0 | 2 | t | f<br>
: Registros lidos: 10<br>
10 | | ade079c2690f73fc19a7c4b991c214d5 | /dados/postgres/work_renato/OUT_REVISTA_FALTANTES_20100903.TXT.conv.utf8 | | | t | | | 2010-09-03 16:14:10.868327 | 1 | | | t | | | t | f | | cadastros:1486, emails:1816, enderecos:1789, telefones:1325, updates:1208 | 1 | t | f<br>
: Registros lidos: 2977<br>
7 | | 07d84cfe2ef7742d8b6611ef38cef9eb | /dados/work/OUT_REVISTA_20100829.txt.conv.utf8 | | | t | | | 2010-08-30 10:05:45.124084 | 1 | | | t | | | t | f | | cadastros:0, emails:0, enderecos:0, telefones:0, updates:211503 | 1 | t | f<br>
: Registros lidos: 256194<br>
1 | | 6fa7b50c205882ce8f03e7b6813ad713 | /dados/work/OUT_PS_20100813_1.txt.conv.utf8 | | | t | | | 2010-08-19 10:42:46.460073 | 1 | | | t | | | t | f | | cadastros:1758010, emails:326527, enderecos:1137104, telefones:1328614, updates:7312 | 2 | t | f<br>
: Registros lidos: 1799958<br>
2 | | changeme | /dados/work/OUT_PS_20100813_2.txt.conv.utf8 | | | t | | | 2010-08-19 11:26:31.105302 | 1 | | | t | | | t | f | | cadastros:1666106, emails:1071933, enderecos:1552752, telefones:1141629, updates:41893 | 2 | t | f<br>
: Registros lidos: 1783627<br>
<br><br>gbb<br><br>idvian<br><br><br><br>Tempo (grande!) de liberação de memoria no perl<br><br>Pessoal,<br><br>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">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">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"<br><br><br><br>Alguma sugestão?<br clear="all"><br>-- <br>Renato Santos<br>
<a href="http://www.renatocron.com/blog/" target="_blank">http://www.renatocron.com/blog/</a><br>