cuducos/minha-receita

Erro ao tentar importar dados para Postgres

Closed this issue · 9 comments

Passos

docker-compose run --rm minha-receita download -d /mnt/data/
docker-compose run --rm minha-receita check --delete -d /mnt/data/
docker-compose run --rm minha-receita drop
docker-compose run --rm minha-receita create
docker-compose run --rm minha-receita transform --high-memory --no-privacy -d /mnt/data/

Quando chega em 10% aproximadamente, para e retorna o seguinte
ERROR: 137

Tentei realizar download novamente, download manualmente, etc... Sempre o mesmo resultado. Alguma ideia do que pode estar acontecendo?

Alguma ideia do que pode estar acontecendo?

Sim, está até documentado que Docker Compose não é recomendado para o banco de dados completo. Também já discutido (sem solução) na #176.

Entendo.

Instalei o postgres local, instalei o go na versão recomendada e rodei:
minha-receita transform --no-privacy -d /mnt/data/

Mesmo problema, em aproximadamente 10% ele travou, parou o processo e retornou "Killed"

Por essa razão, não me parece ser um problema do docker composer.

Você pode me dar mais detalhes, como esses:

  • Qual a data de extração dos arquivos está usando? Qual o conteúdo do updated_at.txt?
  • Qual as configurações do servidor/computador? Sistema operacional, processador, memória…

Killed normalmente significa que o sistema operacional matou o processo. Isso pode ocorrer, por exemplo, por falta de memória.

em aproximadamente 10% ele travou

Aos 10% de qual processo? Existem dois momentos no transform: leitura de dados auxiliares e geração dos JSON. O primeiro momento não usa PostgreSQL, e se for nesse momento, com certeza é falta de recursos computacionais. Se você compartilhar o comando e a saída completa até o erro, você ajuda a gente a te ajudar ; )

Ok, obrigado pelo retorno

Data de extração: 2024-07-22

Setup: Estou rodando em uma VPS
Ubuntu 22.04.4 LTS
4 vCPU Cores
6 GB RAM
400 GB SSD

A vps está limpa, só com o Postgres e Go instalado.

Rodei o comando abaixo
minha-receita transform --no-privacy -d ./data/

Ele inicia as leituras e depois inicia a barra de status, com o % completo. Nesse ponto, imagino que seja o progresso da gravação do postgres. Aos 10% ~15% o processo para, a barra de progresso começa a piscar, e depois mata.

root@vmi1841844:~/minha-receita# minha-receita transform --no-privacy -c -d ./data/ 
2024/08/15 16:58:28 Dropping table public.cnpj…
2024/08/15 16:58:28 Creating table public.cnpj…
2024/08/15 16:58:29 Loading Empresas files…
2024/08/15 16:58:29 Loading Socios files…
2024/08/15 16:58:29 Loading Simples files…
Processing base CNPJ, partners and taxes  12% |██                  | (15043924/123449997, 4117 it/s) [11m4s:7h18m52s]Killed

Obrigado. Meu chute é que 6Gb de RAM seja muito pouco para o volume de dados. Nessa etapa, nem chegou no PostgreSQL ainda. Você pode tentar um swap (se não puder mudar para uma VM melhor):

#203 (comment)

Se me permite, tentamos rodar em uma LXC Ubuntu Server com 8 GB sem sucesso aqui, hoje rodamos em uma com 16 GB, caso contrario, temos travamentos excessivos durante o transform. No passado, com 12 GB, rodando 'transform -b 4096 -c -d /mnt/data -m 4 -p' ele até passava, mas leva um tempão. Com 6 cores e 32GB, usando 'transform -c -d /mnt/data -m 16 -p' foi bem rapido, 90 minutos. Acredito que teu problema seja a memoria mesmo. Tenta pedir no gerenciador da VPS 32GB por algumas horas, depois reverte pra 6.

Relembrando, a gente conseguiu implementar numa LXC usando algo como 'transform -b 1024 -c -d /mnt/data -m 1 -p', mas levou mais de 24 horas. Acho que, naquela vez, tentamos com 4GB, mas não lembro com certeza absoluta.

Fechando por inatividade.