Temos uma configuração bastante grande do ambiente MSMQ que hoje decidiu parar de funcionar.
(Tudo é uma VM no vSphere 4.0 Update 1)
Existem 8 servidores da Web que recebem dados de clientes na rede. Todas essas máquinas têm o MSMQ instalado e simplesmente enviam a mensagem do MSMQ ao servidor principal do MSMQ. As mensagens estão empilhadas no momento na fila de saída. Essas máquinas são o Windows 2008 Web Edition com 2 concessões 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 para a quantidade de dados que pode 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 concessões de RAM e 4 vCPUs. O cluster costumava ter 2 vCPUs, mas a carga da CPU estava atingindo 100%, por isso 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.
Hoje de manhã tudo está correndo muito devagar. Os 8 servidores da web estão exibindo até 300k mensagens nas filas de saída. Atualmente, o servidor em cluster mostra mais de um milhão de mensagens nas filas (algumas chegam a 200k).
Se eu olhar o perfmon nos 8 servidores da Web, isso mostra que estou com uma média de 2 mensagens enviadas por segundo. Se eu olhar para perfmon no cluster, ele mostra ~ 7 mensagens por segundo entrando no cluster.
As máquinas que estão lendo não estão recebendo muitas mensagens cada. Os serviços mais rápidos recebem 10 a 12 mensagens por segundo, os mais lentos exibem 0 ou 1.
As únicas mudanças recentemente é que alteramos o número de servidores Web front-end de 4 para 8. Fizemos isso há cerca de duas 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, ligamos as quatro máquinas mais recentes.
O disco no cluster mostra E / S muito baixa e sem filas.
Para 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 em cluster e os servidores de aplicativos estão em uma segunda vLAN. Não há firewalls entre as vLANs.
E não há nada útil nos logs do aplicativo ou sistema em nenhuma das máquinas.
fonte
Respostas:
Sempre que alguém diz que tem mais de um milhão de mensagens, os alarmes disparam! As mensagens exigem que a memória do kernel (pool paginado) seja gerenciada. Se você possui um número tão vasto de mensagens, pode estar esgotando o que está disponível no servidor em cluster. Um número ideal para o número de mensagens em uma fila é zero - basicamente, verifique se você pode processar as mensagens normalmente mais rapidamente do que elas podem chegar.
Eu recomendaria desligar os servidores da Web e processar completamente a lista de pendências de mensagens antes de colocá-las novamente online.
Item de referência 4 desta postagem do blog: http://blogs.msdn.com/johnbreakwell/archive/2006/09/18/insufficient-resources-run-away-run-away.aspx
Saúde John Breakwell (MSFT)
fonte
Perguntei a um de nossos administradores de sistema e ele disse que nosso ponto mágico era 4 servidores da Web atingindo o MSMQ em máquinas virtuais, depois eles foram para o hardware para resolver. Tente também a captura de pacotes para ver o que está acontecendo. Existe muita autenticação no AD também? Com o quão falador o MSMQ é, você precisa limitar os caminhos de rede e, possivelmente, o caminho de autenticação.
HTH, Chuck.
fonte
Fazendo referência ao seu comentário sobre falta de administração remota, sim, não é uma boa história com os contadores MSMQ e perf. Para quem segue o tópico e quer saber quais combinações de sistemas operacionais funcionam, dê uma olhada no blog Motley Queue:
Contadores de desempenho do MSMQ 4.0 e a chave do Registro NetNameForPerfCounters http://blogs.msdn.com/motleyqueue/archive/2007/12/14/msmq-4-0-performance-counters-and-the-netnameforperfcounters-registry-key.aspx
Saúde John Breakwell (MSFT)
fonte