Última atualização: 01-09-2021 Show Estou tentando enviar dados para meu cluster do Amazon OpenSearch Service. No entanto, recebo um erro de exceção de disjuntor que afirma que meus dados são muito grandes. Por que isso está acontecendo e como resolvo isso? Breve descriçãoQuando uma solicitação chega aos nós do OpenSearch Service, os disjuntores estimam a quantidade de memória necessária para carregar os dados necessários. Em seguida, o OpenSearch Service compara o tamanho estimado ao limite de tamanho de heap configurado. Se o tamanho estimado dos dados for maior que o tamanho de heap disponível, a consulta será encerrada. Como resultado, é lançado um CircuitBreakerException para evitar a sobrecarga do nó. O OpenSearch Service usa estes disjuntores para evitar exceções JVM OutofMemoryError:
Observação: é importante saber qual desses cinco disjuntores disparou a exceção, porque cada disjuntor tem suas próprias necessidades de ajuste. Para obter mais informações sobre os tipos de disjuntores, consulte Configurações do disjuntor no site do Elasticsearch. Para obter o uso atual da memória por nó e por disjuntor, use o seguinte comando: Além disso, observe que os disjuntores são apenas um mecanismo com base no melhor esforço. Embora os disjuntores forneçam alguma resiliência contra a sobrecarga de um nó, ainda é possível acabar recebendo um OutOfMemoryError. Os disjuntores só podem monitorar a memória se ela estiver explicitamente reservada. Portanto, nem sempre é possível estimar o uso exato da memória antecipadamente. Por exemplo, se você tiver uma pequena quantidade de heap de memória, a sobrecarga relativa da memória não monitorada será maior. Para obter mais informações sobre disjuntores e resiliência de nó, consulte Aprimorar a resiliência de nó com o disjuntor de memória real no site do Elasticsearch. Para evitar sobrecarregar os nós de dados, siga as dicas fornecidas na seção Solucionar problemas de alta pressão de memória da JVM. ResoluçãoExceção de disjuntorSe você estiver usando o Elasticsearch versão 7.x ou posterior com 16 GB de heap, receberá o seguinte erro quando o limite do disjuntor for atingido:
Esse exemplo de saída indica que os dados a serem processados são muito grandes para o disjuntor pai manipular. O disjuntor pai (um tipo de disjuntor) é responsável pelo uso geral de memória do cluster. Quando ocorre uma exceção de disjuntor pai, a memória total usada em todos os disjuntores excedeu o limite definido. Um disjuntor pai lança uma exceção quando o cluster excede 95% de 16 GB, ou seja, 15,2 GB de heap. Você pode verificar essa lógica calculando a diferença entre o uso de memória e o limite definido para o disjuntor. Use os valores do nosso exemplo de saída e subtraia “real usage: [15283269136/14.2gb]” de “limit of [16213167308/15gb]”. Esse cálculo mostra que essa solicitação precisa de cerca de 1,02 GB de memória reservada de novos bytes para processar a solicitação corretamente. No entanto, neste exemplo, o cluster tinha menos de 0,8 GB de heap de memória livre disponível quando a solicitação de dados chegou. Como resultado, o disjuntor dispara. A mensagem de exceção do disjuntor pode ser interpretada assim:
Pressão de memória da JVMUma exceção de quebra de circuito geralmente é causada pela alta pressão da memória da JVM. A pressão da memória da JVM refere-se à porcentagem de heap Java usada para todos os nós de dados no cluster. Verifique a métrica JVMMemoryPressure no Amazon CloudWatch para determinar o uso atual. Observação: o tamanho do heap da JVM de um nó de dados é definido como metade do tamanho da memória física (RAM), até 32 GB. Por exemplo, se a memória física (RAM) for 128 GB por nó, o tamanho da pilha ainda será de 32 GB (o tamanho máximo do heap). Caso contrário, o tamanho da pilha é calculado como metade do tamanho da memória física. A alta pressão da memória JVM pode ser causada pelo seguinte:
Solução de problemas de alta pressão da memória da JVMPara resolver a alta pressão da memória da JVM, tente as seguintes dicas:
Este artigo ajudou? Precisa de ajuda com faturamento ou suporte técnico? O suporte da AWS para o Internet Explorer termina em 07/31/2022. Os navegadores compatíveis são: Chrome, Firefox, Edge e Safari. Saiba mais » |