MSMQ muito lento para receber mensagens

8

Temos uma configuração de ambiente MSMQ bastante grande que hoje decidiu parar.

(tudo é uma VM no vSphere 4.0 Update 1)

Existem 8 Servidores Web que recebem dados de clientes na rede. Todas essas máquinas têm o MSMQ instalado e simplesmente enviam a mensagem do MSMQ para o servidor MSMQ principal. As mensagens estão atualmente empilhadas na fila de saída. Essas máquinas são o Windows 2008 Web Edition com 2 GB de RAM e 2 vCPUs.

Temos um servidor MSMQ em Cluster (Windows Cluster Server) que recebe as mensagens dos 8 servidores da web. Não há limite na quantidade de dados que podem estar nas filas. O disco rígido é de 50 Gigs, e há 46 Gigs de espaço livre. Essas máquinas são o Windows 2008 Enterprise Edition com 8 GB de RAM e 4 vCPUs. O cluster costumava ter 2 vCPUs, mas a carga da CPU estava atingindo 100%, então eu aumentei os dois nós do cluster do Windows para 4 vCPUs.

Existem 4 servidores de aplicativos que lêem as mensagens das filas e as processam.

Normalmente tudo isso funciona perfeitamente, mas não hoje.

Esta manhã tudo está correndo muito devagar. Os 8 servidores da web estão exibindo até 300 mil mensagens nas filas de saída. O servidor em cluster atualmente mostra mais de um milhão de mensagens nas filas (algumas são tão baixas quanto 200k).

Se eu olhar para o perfmon nos 8 servidores da web, mostrarei que estou calculando a média de 2 mensagens enviadas por segundo. Se eu olhar para o perfmon no cluster, ele mostrará que ~ 7 mensagens por segundo estão entrando no cluster.

As máquinas que estão fazendo a leitura não recebem muitas mensagens cada. Os serviços mais rápidos recebem 10-12 mensagens por segundo, os mais lentos exibem 0 ou 1.

As únicas mudanças recentes é que mudamos o número de servidores Web front-end de 4 para 8. Fizemos isso há cerca de 2 semanas sem problemas. Na terça-feira nós os desligamos para ver como os 4 restantes poderiam lidar com a carga. Na quarta-feira, voltamos a ligar as quatro novas máquinas.

O disco no cluster mostra um IO muito baixo e nenhum enfileiramento.

Por segurança, atualizei o PowerPath para a versão mais recente, mas isso não ajudou em nada.

Os 8 servidores da web estão em uma vLAN, e os servidores de cluster e os servidores de aplicativos estão em uma segunda vLAN. Não há firewalls entre as vLANs.

E não há nada de útil nos logs do aplicativo ou do sistema em nenhuma das máquinas.

    
por mrdenny 06.02.2010 / 03:31

3 respostas

4

Sempre que alguém diz que tem mais de um milhão de mensagens, o alarme dispara! As mensagens requerem que a memória do kernel (pool paginável) seja gerenciada. Se você tiver um número tão grande de mensagens, talvez esteja esgotando o que está disponível no servidor de cluster. Um número ideal para o número de mensagens em uma fila é zero - basicamente, certifique-se de processar normalmente as mensagens mais rapidamente do que elas podem chegar.

Eu recomendaria desligar os servidores da web e processar completamente o registro posterior das mensagens antes de colocá-las novamente on-line.

Referência Item 4 desta postagem do blog: link

Felicidades John Breakwell (MSFT)

    
por 06.02.2010 / 16:34
1

Perguntei a um de nossos administradores de sistema e ele disse que nosso ponto mágico era que 4 servidores web atingiam a caixa MSMQ em máquinas virtuais, então eles mudaram para a caixa de hardware para resolver. Tente também capturar pacotes para ver o que está acontecendo. Há muito em autenticação indo para o AD também? Com a forma como o MSMQ é chatty, você precisa limitar os caminhos de rede e possivelmente o caminho de autenticação.

HTH, Chuck.

    
por 06.02.2010 / 04:08
1

Referenciando seu comentário sobre falta de administração remota, sim, não é uma ótima história com MSMQ e contadores de perf. Para qualquer um que esteja seguindo o tópico e querendo saber quais combinações de sistemas operacionais funcionam, dê uma olhada no blog do Motley Queue:

Contadores de desempenho do MSMQ 4.0 e a chave do Registro NetNameForPerfCounters link

Felicidades John Breakwell (MSFT)

    
por 08.02.2010 / 00:31