IMPORTANTE: esta documentação foi descontinuada. Leia a documentação Solucionando erros de “Out of memory” na implantação atualizada no nosso novo portal de documentação.
Ao implantar um pipeline, alguns dos erros mais comuns que podem ocorrer é a falta de memória, “Out of memory”. Este artigo é principalmente sobre como identificar corretamente o erro e corrigi-lo.
Identificando os erros de Out of memory
O erro “Out of Memory” ocorre quando o pipeline tenta consumir mais memória do que foi alocada durante a implantação.
A primeira etapa para resolver esse problema é encontrar sua causa analisando os logs de execução do pipeline com falha. Pode ter ocorrido uma sobrecarga de memória no pipeline 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;
usando 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.
Corrigindo os erros
Agora que você já sabe como identificar o que pode estar causando os erros listados anteriormente, saiba como resolver cada problema com uma ação específica.
Atualize o Pipeline Engine para a versão mais recente
Para atualizar 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.
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.
Executando muitas 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.
Não limpar o componente Session Management
Limpe o componente Session Management para salvar os dados depois de lê-los. Esta é uma boa prática para reduzir o risco de sobrecarga de memória e de falta de memória. Para realizar esta ação, deve-se configurar 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.