Estou tendo uma batalha clássica de administrador do sistema de desenvolvedor em que afirmo que há um problema de E/S no disco do servidor sql compartilhado, enquanto o administrador do sistema me diz que a capacidade não foi atingida.
Uma coisa que pude apontar é que o comprimento médio da fila de disco no servidor SQL é muito alto. O comprimento médio da fila tem uma média de 5 e aumenta regularmente para 10 a 15. Nunca chega abaixo de 2,5
O administrador do sistema me disse que isso não é um problema porque o disco é uma faixa de 6 discos e o comprimento da fila é, por definição, ruim se for maior que o dobro dos eixos. Portanto, sua fórmula é 6 * 2 = 12, que é menor que a média 5.
O raciocínio dele está correto? Podemos apenas olhar para um disco azul como um fuso? O comprimento médio constante da fila de min 5 não é uma indicação?
EDIT: Acontece que os discos eram um grande gargalo. O aplicativo funciona sem problemas novamente depois de mover os bancos de dados para um servidor de banco de dados separado.
Bastante novo no Azure, mas aqui está minha oferta:
Quanto mais discos do Azure você abranger, melhor será seu desempenho, isso é verdade. Eu não tenho certeza sobre a equação embora. De qualquer forma, acho que você está latindo para a árvore errada...
O Azure impõe limites artificiais em métricas como IOPS e máximo de leituras/gravações por segundo, portanto, o comprimento da fila é apenas uma das poucas métricas que você precisa observar.
Esta pergunta é de natureza semelhante à sua. Ele também tem uma referência útil a um artigo de desempenho do Azure SQL . Garantir que você siga as práticas recomendadas da Microsoft pode ajudá-lo a melhorar o desempenho.
Não tenho certeza se aumentar ainda mais o número de discos que você usa ajudará. Pelo que tenho visto, o crescimento não é linear. Você pode esperar que o IOPS para 6 discos seja 3.000 (6x500), mas provavelmente é mais como 2.000.
Mudar para a camada DS (SSD) pode ser a única maneira de obter o tipo de desempenho que você procura em uma única VM. Aqui está um resumo dos limites de instância do Azure: https://azure.microsoft.com/en-gb/documentation/articles/virtual-machines-size-specs/
Por fim, a melhor maneira de melhorar o desempenho de qualquer aplicativo é reduzir a dependência de E/S. Cache sempre que possível. Você pode tentar uma instância com mais memória.
Você está focando um pouco demais em uma única métrica!
Diagnosticar um gargalo para um único componente raramente termina com um contador dando uma explicação completa.
Existem alguns ótimos guias para usar o perfmon para diagnosticar problemas de desempenho no SQL Server.
E, infelizmente, seu administrador pode estar certo, o contador que você escolher realmente depende do hardware subjacente. No entanto, não consigo encontrar nenhuma documentação informando que o Azure é baseado em uma invasão de 6 discos. Então, talvez se concentre em outros contadores?
Mas como uma recomendação final. Se sua única indicação foi o Avg. Disk Queue Length, seu Sysadmin provavelmente está certo.
Se tiver certeza de que é um problema de disco, você sempre pode tentar criar espaços de armazenamento.