Por que a instância do EC2 gasta todo seu tempo em “IRQ” e o que fazer sobre isso?

3

Eu tenho uma instância do EC2 m1.small que está basicamente executando o Apache como um servidor web para vários sites PHP simples (que usam o RDS como um banco de dados). O servidor está constantemente com uma média de carga muito alta - por volta de 8, e nunca abaixo de 5. Isso faz com que meus sites fiquem vagarosamente lentos, muito mais do que eu esperaria de uma CPU supostamente de 2.6GHz com 1.7GB de RAM. >

top e amigos mostram que outros ~ 50% "roubam" o tempo (AFAIU, tempo roubado pelo hipervisor para outras VMs na mesma CPU), o resto é quase que totalmente "IRQ".

mpstat diz que esse tempo é gasto em 191.59 interrupções / s muito estáveis (ou seja, esse número quase não muda com o tempo) e, de acordo com '/ proc / interrupts', elas são gastas em xen-percpu-virq timer0 e xen-dyn-event eth0 .

O que são estes, e como posso obter a instância do EC2 para baixar a carga e gastar mais tempo nos meus sites PHP?

    
por Guss 07.06.2014 / 19:10

1 resposta

1

Depois de examinar isso por um tempo, isso parece ser um "problema de hardware" - provavelmente o servidor físico que hospeda a VM está sobrecarregado com outras VMs, e as máquinas m1 não obtêm desempenho garantido. você obtém o tempo de CPU restante no host. Pior, se a sua VM estiver rodando no núcleo da CPU 0, você também terá todo o tratamento de interrupções na máquina. Veja este artigo wiki Xen em "A primeira VCPU da HVM VM (e possivelmente única) é totalmente utilizado.". Veja também este tópico de suporte da AWS para outras pessoas com um problema de interrupção semelhante.

A única solução neste momento é fazer com que sua VM seja migrada para outro host físico. Isso às vezes pode ser feito simplesmente interrompendo as VMs, aguardando alguns minutos e iniciando novamente - se o EC2 tiver atribuído outra VM ao seu host antigo nesse meio tempo, você poderá obter um slot diferente e o problema poderá ser resolvido.

Se isso não funcionar, a melhor opção é criar uma nova imagem da sua VM e iniciá-la em outra zona de disponibilidade. Isso fará com que os IPs sejam substituídos e pode exigir a atualização de grupos de segurança e regras de firewall. Além disso, certifique-se de interromper sua VM antes de criar a imagem - para garantir que, após a criação da imagem e antes do início da nova VM, sua VM antiga não gere novos dados.

    
por 09.06.2014 / 08:04