Audit de performance sql server sur Azure (IAAS)
-
Secteur d'activité
Energie -
Contexte client
Les alimentations quotidiennes prennent la nuit entière et débordent sur la mâtinée en bloquant le reporting des utilisateurs. Les serveurs MSSQL hébergées sur Azure (IAAS) sont taillés par le cpu principalement. Malgré une première campagne de performance ayant apporté des améliorations, beaucoup trop de traitements d'alimentation restent longs. Les nouveaux projets sont reportés car trop impactants sur les chaines actuelles -
Enjeux client
Réduire les temps d'alimentation pour permettre aux nouveaux projets de voir le jour. -
Contexte technologique
- SGBD : MS SQL Server 2016 EE
- ETL : SSIS et procédures stockées
- Sources : SQL Server Système et fichiers
- Reporting : SSRS
-
Délais
1 journée -
Résultat
Après une étude rapide sur les traces de performance et spécialement les traces disques, l'audit a montré la limitation de la bande passante disques sur la VM hébergeant la base de données SQL Server. L'audit préconisera la modification du type de VM de E32s.v3 (limitée à 512Mo/s pour tous les disques) vers une E32ds.v4 (limitations de 1.9Go/s pour le disques SSD local et 768Mo/s pour les disques extérieurs) pour libérer l'instance MSSQL.
Dans ce cas d'audit de performance MS SQL Server sur Azure IAAS, le client souhaitait faire un point sur les performances disques de sa VM Azure E32s.v3 qui hébergeait son instance MSSQL 2016 de production pour son datawarehouse. Le client disposait de RedGate SQL Monitor et donc d'un historique de traces de performance centralisées dans un base MSSQL.
Analyses des performances disques
En utilisant les traces de RedGate SqlMonitor avec un dashboard spécifique sur la consommation I/Os disques nous avons pu détecté un limitation de la bande passante assez basse et fixée 512Mo/s :
Chaque point sur le graphe est un relevé de 30s de la bande passante disque (en Mo/s) moyenne de chaque disque.
D'autres constats par lecture directe ont montré que lorsqu'un disque X consommait une partie de la bande passante (200Mo/s par exemple) les autres disques ne pouvaient pas dépasser 512Mo-BPx (312Mo/s pour notre exemple).
Nous avons donc demandé une nouvelle VM de type E32ds.v4 disposant d'autant de vcpu et de RAM que notre E32s.v3 mais ayant selon la documentation Azure des limites de bande passante différentes.
Avec cette nouvelle VM et l'ancienne nous avons réalisé un benchmark iometer dont voici les résultats :
Conclusion
Il faut bien choisir sa VM pour obtenir de bonnes performances sql server sur Azure IAAS (ou tout autre cloud !). Un datawarehouse consommera souvent beaucoup de bande passante disque, il faut donc prêter une attention particulière aux limitations de bande passante des VM sur le cloud (AWS, Azure ou d'autres...). Il faut souvent des VMs puissantes (ie avec beaucoup de vcpu) pour pouvoir prétendre à une bande passante correcte. A cela vient s'ajouter les problématiques de licences MS SQL. Une VM dotée de nombreux vcpu engendrera un coup licence très important freinant du même coup la montée en gamme. Certains clouds (AWS ou Azure à ma connaissance) l'ont bien compris et proposent (pour le même coût) des VM bridées en vcpu mais pas\moins en bande passante.