Como solucionar erros de “Out of memory” na implantação

Conheça as possíveis causas de erros “Out of memory” na implantação de pipeline e como corrigi-los adequadamente.

O erro de falta de memória, “Out of Memory”, ocorre quando o pipeline tenta consumir mais memória do que foi alocada durante a implantação.

Identifique os erros de Out of memory

A primeira etapa para resolver esse problema é encontrar sua causa analisando os logs de execução do pipeline com falha. A sobrecarga de memória pode ter acontecido por:

  • fazer consultas em uma grande quantidade de dados sem paginação em uma solicitação HTTP, um banco de dados ou ao baixar e ler um arquivo na memória;

  • executar muitas execuções simultâneas;

  • usar o componente Session Management para armazenar dados e não limpá-lo após a leitura.

Nota: Verifique a data da última implantação. Se for mais antigo que a última versão, execute uma reimplantação para atualizar o pipeline.

Corrija os erros

Atualize o Pipeline Engine para a versão mais recente

Para atualizar o Pipeline Engine para uma possível nova versão, a primeira coisa que você precisa fazer é reimplantar o pipeline (reciclagem do pipeline). Para obter mais informações, consulte Reimplantando um pipeline.

Isso pode acontecer porque a Digibee Integration Platform atualiza regularmente sua infraestrutura. Parte desta atualização é reciclar os computadores que oferecem suporte à infraestrutura. Saiba mais sobre reciclagem de pipelines em Alerta nos pipelines em Run.

Evite grande quantidade de dados sem paginação

Os erros de “Out of memory” também podem ser resolvidos por paginação e/ou uma arquitetura orientada a eventos. A paginação permite que você processe dados em partes, em vez de tudo de uma só vez. Para obter mais informações sobre paginação, consulte Exemplos de paginação.

Implementar uma arquitetura orientada a eventos significa usar o pipeline principal para recuperar dados e criar um loop que passa por esses dados e chama um segundo pipeline que possui um event trigger.

Dessa forma, você divide a carga de memória e cria um fluxo de integração escalável que funciona com conjuntos de dados pequenos e grandes. Para saber mais sobre Arquiteturas orientadas a eventos, consulte este artigo.

Após os ajustes necessários no pipeline, reimplante novamente no ambiente de teste.

Organize as execuções simultâneas

Os consumidores compartilham a memória disponível no contêiner. Ou seja, quanto mais consumidores, menos memória disponível para cada um. É recomendável adicionar novas réplicas a esse pipeline para fluir o processo.

Um pipeline SMALL com 2 réplicas tem o dobro do desempenho de processamento e escalabilidade e assim por diante. As réplicas não apenas fornecem mais poder de processamento e escalabilidade, mas também garantem maior disponibilidade - se uma das réplicas falhar, haverá outras para assumir. Para obter mais informações sobre esses conceitos, consulte Pipeline Engine.

Após fazer os ajustes necessários no pipeline, reimplante-o no ambiente de teste. Se o erro persistir, aumente o Tamanho da implantação do pipeline.

Limpe o componente Session Management

Uma boa prática para reduzir o risco de sobrecarga ou falta de memória é a limpeza do componente Session Management, que salva os dados depois de lê-los. Para realizar esta ação, configure a função DELETE nas operações do componente.

Assim, após o componente enviar a mensagem como resposta final, é possível limpar os dados armazenados após a leitura com a operação DELETE caso este componente seja a última etapa do pipeline. Para saber mais sobre o componente Session Management, consulte este artigo.

Atualizado