Tenemos una configuración de entorno MSMQ bastante grande que hoy decidió detenerse.
(Todo es una VM en vSphere 4.0 Update 1)
Hay 8 servidores web que reciben datos de clientes en la red. Todas estas máquinas tienen instalado MSMQ y simplemente envían el mensaje de MSMQ al servidor principal de MSMQ. Los mensajes se apilan actualmente en la cola de salida. Estas máquinas son Windows 2008 Web Edition con 2 Gigas de RAM y 2 vCPU.
Tenemos un servidor MSMQ en clúster (Windows Cluster Server) que recibe los mensajes de los 8 servidores web. No hay límite en la cantidad de datos que pueden estar en las colas. El disco duro tiene 50 Gigas, y hay 46 Gigas de espacio libre. Estas máquinas son Windows 2008 Enterprise Edition con 8 Gigas de RAM y 4 vCPU. El clúster solía tener 2 vCPU, pero la carga de la CPU alcanzaba el 100%, por lo que aumenté ambos nodos del clúster de Windows a 4 vCPU.
Hay 4 servidores de aplicaciones que leen los mensajes de las colas y los procesan.
Normalmente todo esto funciona perfectamente, pero no hoy.
Esta mañana todo va muy despacio. Los 8 servidores web actualmente muestran hasta 300k mensajes en las colas de salida. El servidor en clúster actualmente muestra más de un millón de mensajes en las colas (algunos son tan bajos como 200k).
Si miro perfmon en los 8 servidores web, muestra que estoy promediando 2 mensajes enviados por segundo. Si miro a perfmon en el clúster, muestra ~ 7 mensajes por segundo que ingresan al clúster.
Las máquinas que están leyendo no reciben muchos mensajes cada una. Los servicios más rápidos reciben 10-12 mensajes por segundo, los más lentos muestran 0 o 1.
Los únicos cambios recientes son que cambiamos el número de servidores web front-end de 4 a 8. Lo hicimos hace aproximadamente 2 semanas sin problemas. El martes los apagamos para ver cómo los 4 restantes podían manejar la carga. El miércoles volvimos a encender las cuatro máquinas más nuevas.
El disco en el clúster muestra un IO muy bajo y no hay colas.
Para estar seguro, he actualizado PowerPath a la versión más nueva, pero eso no ha ayudado en nada.
Los 8 servidores web están en una vLAN, y los servidores Cluster'd y los servidores de aplicaciones están en una segunda vLAN. No hay firewalls entre las vLAN.
Y no hay nada útil en la aplicación o en los registros del sistema en ninguna de las máquinas.
fuente
Respuestas:
Cada vez que alguien dice que tiene más de un millón de mensajes, ¡suenan los klaxons de alarma! Los mensajes requieren que se administre la memoria del núcleo (grupo paginado). Si tiene una cantidad tan grande de mensajes, puede estar agotando lo que está disponible en el servidor agrupado. Un número óptimo para la cantidad de mensajes en una cola es cero; básicamente, asegúrese de que normalmente puede procesar los mensajes más rápido de lo que pueden llegar.
Recomendaría apagar los servidores web y procesar por completo la acumulación de mensajes antes de volver a ponerlos en línea nuevamente.
Artículo de referencia 4 de esta publicación de blog: http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/insufficient-resources-run-away-run-away.aspx
Saludos John Breakwell (MSFT)
fuente
Le pregunté a uno de nuestros administradores de sistemas y dijo que nuestro punto mágico era que 4 servidores web alcanzaran la casilla MSMQ en máquinas virtuales, luego se trasladaron a la caja de hardware para resolver. También intente la captura de paquetes para ver qué está pasando. ¿Hay mucho en autenticación yendo a AD también? Con lo hablador que es MSMQ, debe limitar las rutas de red y posiblemente la ruta de autenticación.
HTH, Chuck.
fuente
Si hace referencia a su comentario sobre la falta de administración remota, sí, no es una gran historia con MSMQ y los contadores de rendimiento. Para cualquiera que siga el hilo y quiera saber qué combinaciones de sistemas operativos funcionan, eche un vistazo al blog Motley Queue:
Contadores de rendimiento de MSMQ 4.0 y la clave de registro NetNameForPerfCounters http://blogs.msdn.com/motleyqueue/archive/2007/12/14/msmq-4-0-performance-counters-and-the-netnameforperfcounters-registry-key.aspx
Saludos John Breakwell (MSFT)
fuente