CPU e carga média conflito no servidor EC2

3

Estou tendo problemas para entender qual recurso do servidor está causando atraso no meu servidor de jogos Java. No último patch do meu servidor de jogos, atualizei meu servidor de lâmpadas EC2 de apache2.2, php5.3, mysql5.5 para apache2.4, php7.0, mysql5.6 Eu também atualizei o meu próprio jogo, para incluir muitas outras instâncias de monstros que estão em loop apesar de todos os loop do jogo - entre outras coisas.

Aqui está a saída da direita quando o meu servidor de jogo é iniciado:

Aquiestáasaídadealgunsminutosdepois:

Eaquiestáasaídadamanhãseguinte:

Comovocêpodevernasimagens,ousodaCPUdomeuprocessoJavaestáemtornode80%naúltimacapturadetela,masoloadavgvaipara1.20.Euatévichegara2,7nestamanhã.Oscréditosdacpuafetamaquantidaderealdecpuqueomeuservidortem,entãofazsentidoqueaporcentagemsubaàmedidaquemeusaldodecréditosdiminui,masporque80%deatrasodomeuservidor?

EmminhasmétricasdoAmazonEC2,vejocpuem10%(oquemeconfundeaindamais):

Quando inicio o meu servidor, o meu mmorpg não fica atrasado. Então, assim que meus créditos de CPU são esgotados, ele começa a ficar lento. Isso me faz sentir como é baseado em CPU, mas quando vejo 10% e 80% não vejo por quê. Qualquer ajuda seria muito apreciada. Eu estou em uma instância T2.micro, por isso tem 1 vCPU. Se eu subir para a próxima instância, ele quase dobra de preço e fica na mesma vCPU de 1, mas com mais créditos.

Para encurtar a história, eu quero entender completamente o que eu estou fazendo quando o número de 80% está me jogando. Eu não quero apenas jogar dinheiro no problema.

    
por KisnardOnline 25.02.2017 / 16:46

2 respostas

2

Você percebe os grandes valores de st ? Esses são ciclos de CPU "roubados" - ciclos que você não pode usar, porque você esgotou completamente - ou totalmente - o saldo de crédito da sua CPU.

O uso é de 10% é calculado em uma janela de tempo, provavelmente 5 minutos. Se você observar a saída de top , verá que 100% menos a taxa de retorno roubada é de aproximadamente 10% ao longo do tempo.

Você basicamente não tem espaço de CPU disponível neste momento. Espera-se que uma carga de trabalho crítica quanto ao tempo apresente uma capacidade de resposta inconsistente sob essas condições.

Sua carga de trabalho é muito grande para um t2.micro. Se este não fosse o caso, você sempre teria um excedente de créditos de CPU ... essencialmente, por definição. A menos que você possa fazer algo para reduzir a carga de trabalho ou melhorar a eficiência de seu código, os sintomas atuais indicam a necessidade de uma classe de instância maior.

    
por 25.02.2017 / 19:54
2

Quando seu Saldo de Crédito da CPU está vazio, o host (supervisor) simplesmente não concede nenhum tempo ao processador (exceto muito pequeno) ao seu ec2. Esta quantidade muito pequena é suficiente para ssh, mas não o suficiente para executar um monstro faminto chamado java. Portanto, a instância irá atrasar, só porque ela dorme certa quantidade de tempo, enquanto o mundo real, incluindo os jogadores não.

A única solução é aumentar o equilíbrio da CPU: atualizando a instância ou reduzindo a carga ou da maneira que desejar. Uma instância não funcionará bem quando o crédito acabar, ponto final.

    
por 25.02.2017 / 21:30