MSMQ muy lento para recibir mensajes

8

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.

mrdenny
fuente
2
Resulta que la causa de la lectura lenta de MSMQ fue en realidad un problema de aplicación. Los servicios que leen de la cola luego van a cosas en un recurso compartido de archivos. El uso compartido de archivos comenzó a tomar más y más tiempo, lo que hizo que los servicios se ejecutaran más lentamente, lo que provocó que las colas se respaldaran, y ahora tenemos un desastre. Aparentemente, nuestra base de usuarios ha crecido mucho más rápido de lo planeado y estamos maximizando uno de los grupos RAID en la SAN que aloja los recursos compartidos de archivos. El lunes haremos un pedido urgente para obtener más espacio SAN con nuestro proveedor.
mrdenny
2
No vimos el crecimiento de esta cola antes de tiempo porque nuestro servidor de monitoreo es un servidor Windows 2003, y las máquinas con Windows 2003 no pueden monitorear las Colas MSMQ en clúster de Windows 2008 de forma remota. El servidor de supervisión ya está programado para una actualización en marzo. <
sigh

Respuestas:

4

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
Tengo una llamada a PSS en este momento, y estoy esperando que me devuelvan la llamada ahora. He detenido el flujo de mensajes a la cola en los servidores web. Las colas de salida en los servidores web están llenas en este momento con 1 concierto de información cada una. Las colas agrupadas tienen un total de aproximadamente 4.5 millones de mensajes cada una. Normalmente mantenemos un número muy bajo de mensajes en las colas a medida que procesamos los datos muy rápidamente. Algo sucedió (no estoy seguro de qué) y todo se fue al infierno.
mrdenny
John, gracias por echarme un vistazo. Según el resultado de tmq, supongo que ese es mi problema. Limitaciones de agrupaciones (calculadas aproximadamente, en KB) Paginado: límite 307,200 usado para 397% No paginado: límite 262,144 usado para 49% Tengo las colas disminuyendo el drenaje mientras espero que PSS me devuelva la llamada. Si estás en Redmond durante la Cumbre MVP, házmelo saber, cervezas en mí.
mrdenny
@ user34024 encontramos el problema inicial, que he puesto en un comentario arriba. Gracias por la ayuda.
mrdenny
1

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.

SQLGuyChuck
fuente
¿Fueron capaces de precisar qué causó exactamente la desaceleración cuando tienes más de 4 servidores web hablando con un solo servidor MSMQ? El almacenamiento es almacenamiento SAN directo sobre iSCSI, por lo que no debería ser un problema de almacenamiento, por ejemplo. Intentaré apagar 4 de los 8 servidores web y ver qué se me ocurre. Si tengo que decirle a mi jefe que compre nuevo hardware, necesitaré una buena razón.
mrdenny
Solo la charla de los mensajes. También encontraron algunas configuraciones de autenticación fallidas.
SQLGuyChuck
Supongo que descargaré wireshark y lo pondré en el servidor MSMQ y veré qué muestra. No se puede poner en los servidores web, se bloquea después de unos 30 segundos debido a la carga de tráfico de la red.
mrdenny
Así que encendí WireShark en la máquina y veo unos 3 segundos entre mensajes del único servidor web que estoy monitoreando. No hace falta decir que eso no se ve bien.
mrdenny
Encontramos el problema inicial, que he puesto en un comentario arriba. Gracias por la ayuda.
mrdenny
1

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