Bonjour,
Depuis plusieur semaines, nous avons des serveurs qui offrent des performances très en deça de nos attentes.
Il sont virtualisés sous KVM.
L'OS est Windows 2008 R2
Certains font tourner SQL Server 2014 Express / Standard
D'autres dont tourner IIS qui communiquent avec les bases de données
D'autres des applications développées en .NET qui communiquement principalement avec les bases de données
Je n'ai pas le détail du matériel.
A priori, des machines avec 32 CPU et 256 Mo de RAM qui hébergent plusieurs VM.
Les symptômes :
- Si on lance une requête dans SQL Server (en local) assez lourde (lecture d'un grand nombre de lignes, calculs, etc.) qui retourne peu de lignes : temps de réponse correct. Quelques secondes de moulinage, puis restitution des lignes à l'écran immédiate.
- Si on lance une requête dans SQL Server (en local) simple qui retourne un assez grand nombre de lignes (select * sans clause where par exemple qui ramène plus de 10 000 lignes). Charge CPU à font. Les premières lignes sont ramenées immédiatement, mais ensuite l'ensemble des lignes met plusieurs dizaines de secondes (voir plusieurs minutes) pour être chargé. Pourtant, on n'est pas ne réseau. Les disques ont une activité pour ainsi dire nulle (faut dire qu'avec 16 Go de mémoire allouée au serveur pour une base de 600 Mo, y'a pas de quoi faire des accès disque).
Ensuite, d'un serveur à l'autre :
- Sur un serveur de traitement, on lance par exemple un import de données. Un fichier CSV de 500 Ko contenant 3 lignes de facture par exemple. On en a pour 30 minutes. Activité disque, réseau et CPU néant (moins de 5% pour chaque) aussi bien sur le serveur de traitement que sur le serveur de base de données.
- Sur un serveur web, on lance une requête qui retourne 10 000 lignes. Ca met plusieurs minutes à afficher la page. Idem, activité néan sur les différents serveurs.
Ca donne l'impression d'être au guichet de La Poste avec un gars la gueule enfarinée en face... Toi t'es au taquet pour récupérer ton colis "chuis à a bourre, chuis à la bourre". Mais l'autre il est en mode "putain y me faut un café, putain y me faut un café, boulot de merde" et il traine ses savates en oubliant de rapporter le colis qu'il était parti cherché.
On comprends pas.
On a changé les VM de machine physique, changé d'hyperviseur, changer les switch réseau. Rien n'y fait.
Le ballooning est désactivé sur l'ensemble des machines.
On a déjà ajouté le flag -T8038 au démarrage du service de SQL Server.
Quelqu'un a-t-il déjà constaté ce genre de phénomène ?
Ce qui nous laisse perplexe, c'est surtout qu'aucune machine ne semble travailler, alors que l'application avance avec 2 de tension...
Edit : J'ai oublié de préciser quelques tests effectués :
- Copie d'un gros fichier d'un serveur A à un serveur B : 500 Mo/s
- Backup FULL de SQL Server vers un serveur distant : Moins de 30 secondes pour une base de 600 Mo
- Recalcul des stats et re-création de tous les index de la base : aucun changement
Partager