¿Por qué la instancia de EC2 pasa todo su time en "IRQ" y qué hacer al respecto?

Tengo una instancia de m1.small EC2 que en su mayoría solo ejecuta Apache como server web para varios sitios web PHP simples (que usan RDS como database). El server está constantemente con un promedio de carga muy alto – alnetworkingedor de 8, y nunca debajo de 5. Esto hace que mis sitios web sean molestamente lentos, mucho más de lo que esperaría de una supuesta CPU de 2.6GHz con 1.7GB de RAM.

top y amigos muestra que otro entonces ~ 50% de time de "robo" (AFAIU, time robado por el hipervisor para otras máquinas virtuales en la misma CPU), el rest es casi completamente time de "IRQ".

mpstat dice que esta vez se gasta en 191.59 interrupciones / seg (es decir, que esa cantidad casi no cambia con el time), y de acuerdo con '/ proc / interrupts' estas se gastan principalmente en xen-percpu-virq timer0 y xen-dyn-event eth0 .

¿Qué son estos y cómo puedo get la instancia EC2 para networkingucir la carga y pasar más time en mis sitios PHP?

Después de mirarlo por un momento, esto parece un "problema de hardware": lo más probable es que el server físico que aloja la VM tenga mucha carga de otras VM, y las máquinas de tipo m1 no obtienen un performance garantizado, por lo que obtienes el time de CPU queda en el host. Peor aún, si su máquina virtual se está ejecutando en el núcleo 0 de CPU, también obtendrá todo el event handling interrupciones en la máquina. Consulte este artículo de wiki de Xen en "La primera (y posiblemente única) VCPU de VM de HVM se utiliza por completo". Consulte también este hilo de ayuda de AWS para otras personas con un problema de interrupción similar.

La única solución en este punto es hacer que su VM migre a otro host físico. Esto a veces se puede hacer de manera muy simple deteniendo las máquinas virtuales, esperando unos minutos y comenzando de nuevo. Si EC2 le ha asignado otra máquina virtual a su antiguo server mientras tanto, puede get una ranura diferente y el problema puede resolverse.

Si eso no funciona, la mejor opción es crear una nueva image desde su máquina virtual e iniciarla en otra zona de disponibilidad. Esto hará que los IP sean reemplazados y puede requerir la actualización de grupos de security y reglas de firewall. Además, asegúrese de detener su VM antes de crear la image, para asegurarse de que después de que se haya creado la image y antes de que se inicie la nueva VM, su VM anterior no generará nuevos datos.

    Intereting Posts