Você pode ver imediatamente uma diferença entre os resultados. No contêiner padrão, como já relatado em muitos testes, o Java registra valores de recurso do nó do host, e não das alocações de recurso do contêiner. No contêiner padrão, o tamanho máximo de pilha relatado é derivado do algoritmo de dimensionamento do Java 7, definido como um quarto da memória física do host, por padrão. No entanto, no caso do contêiner migrado do Migrate for Anthos, os valores são informados corretamente.
Você pode ver um impacto semelhante ao consultar o plano de threads da coleta de lixo do Java. Conecte-se ao shell e execute:
java -XX:+PrintFlagsFinal -version | grep ParallelGCThreads
No contêiner padrão, você terá o resultado:
uintx ParallelGCThreads = 4 {product}
Porém, no contêiner de carga de trabalho migrado, você verá:
uintx ParallelGCThreads = 0 {product}
Portanto, aqui também você vê a simultaneidade correta do contêiner do Migrate for Anthos, mas não no contêiner padrão.
Agora veremos o impacto dessas diferenças sob carga. Geramos a carga do aplicativo usando Hey. Por exemplo, o comando a seguir gera a carga do aplicativo por dois minutos, com uma simultaneidade de solicitação de 50:
./hey_linux_amd64 -z 2m http://##.###.###.###:8080/node-info/
Veja os resultados do teste com o contêiner padrão:
Status code distribution:
[200] 332 responses
[404] 8343 responses
Error distribution:
[29] Get http://##.###.###.###:8080/node-info/: EOF
[10116] Get http://##.###.###.###:8080/node-info/: dial tcp ##.###.###.###:8080: connect: connection refused
[91] Get http://##.###.###.###:8080/node-info/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers
Essa é uma indicação clara de que o serviço não está gerenciando a carga corretamente. E, quando inspecionamos os registros do contêiner, vemos várias ocorrências de
*** JBossAS process (79) received KILL signal ***
Isso ocorre devido a um erro de falta de memória (OOM, na sigla em inglês). Com a implantação do Kubernetes, o contêiner com um erro de falta de memória interrompido foi reiniciado automaticamente, durante o período em que o serviço estava indisponível. Isso ocorre porque o tamanho da pilha do Java é calculado incorretamente, considerando os recursos do host, em vez das restrições de recursos do contêiner. Quando esse valor não é calculado corretamente, o Java tenta alocar mais memória do que o disponível, gerando a interrupção do serviço e falhas no aplicativo.
Por outro lado, a execução do mesmo teste de carga no contêiner migrado com o Migrate for Anthos resulta em:
Status code distribution:
[200] 1676 responses
[202] 76 responses
Isso indica que o aplicativo gerenciou a carga com sucesso, mesmo quando a pressão da memória estava alta.
Aproveite a eficácia dos contêineres em aplicativos legados
Mostramos como o Migrate for Anthos soluciona um problema conhecido, aumentando a visibilidade de recursos de contêiner no Kubernetes. Isso ajuda a garantir que os aplicativos legados executados nas versões Java mais antigas se comportem corretamente após serem migrados, sem a necessidade de ajustes e reconfigurações manuais para adequação às restrições dinâmicas aplicadas pela especificação do pod do Kubernetes. Também demonstramos como o aplicativo legado permanece estável e responsivo sob carga de memória, sem apresentar erros nem reinicializações.
Com esse recurso, o Migrate for Anthos pode ajudar você a aproveitar os benefícios da conteinerização e da orquestração de contêineres com o Kubernetes, para modernizar suas operações e o gerenciamento de aplicativos legados. Explore o poder do CI/CD com o gerenciamento baseado em imagem, atualizações contínuas e sem interrupções e a gestão unificada de desempenho de políticas e aplicativos em aplicativos legados e nativos da nuvem, sem exigir acesso ao código-fonte nem processos de reescrita.
Para saber mais, consulte nosso blog de lançamento original, que descreve o suporte para operações do segundo dia ou preencha este formulário para receber informações. Lembre-se de mencionar “Migrate for Anthos" na caixa de comentários.
Nenhum comentário :
Postar um comentário