4 votes

Optimisation du serveur MSSQL 2008 dans VMWare ESXi

Je fais normalement tourner mes serveurs MSSQL sur des serveurs dédiés, mais nous avons pris en charge un client qui fait tourner son serveur SQL dans un hôte VMWare ESXi 4, et franchement, il fonctionne comme une merde.

Nous avons identifié que ce n'est pas la base de données elle-même qui est en cause. Nous avons déployé la même base de données sur un serveur dédié avec des spécifications inférieures à celles de l'invité VMWare et elle a fonctionné au moins 5 fois plus vite.

Le serveur est :

Dual Quad Core Xeon 2Ghz (I don't know the exact model)
24Gb RAM
4x 300Gb SAS (RAID 10)
ESXi 4

L'hôte est :

4x vCPUs
3Gb RAM
80Gb disk space
Server 2008 Standard
SQL Server 2008 Workgroup

Les autres machines virtuelles de l'hôte ont un trafic très faible. Un deuxième DC (presque inutilisé), un serveur web à faible trafic et un serveur de terminal à faible volume (~5 utilisateurs à tout moment) et quelques autres invités divers.

J'ai lu un article il y a longtemps sur le réglage de tout un tas de paramètres de pagination dans Windows et le serveur SQL pour l'optimiser, mais je ne le trouve plus :(

Y a-t-il des conseils ou des astuces que quelqu'un peut proposer pour améliorer les performances de SQL ?

5voto

Zypher Points 36865

Va chercher le CLI à distance de vSphere (allez dans pilotes et outils -> outils d'automatisation et SDKs)

Une fois cette configuration effectuée, connectez-vous au boîtier et utilisez esx top pour voir où se trouve votre goulot d'étranglement ( lien informatif )

Puisque vous utilisez 4 vCPU, faites attention à la colonne %RDY de l'écran du processeur dans esxtop. C'est le temps d'attente de la machine pour accéder aux 4 cpu en même temps. Selon le SE VMWare auquel vous vous adressez, tout ce qui est supérieur à 2-5 est MAUVAIS.

Vous pouvez aussi regarder les graphiques sous l'onglet "performance" du CIV pour voir ce qui se passe, regardez particulièrement les graphiques de la mémoire, surveillez un ballon de mémoire élevé.

3voto

Chopper3 Points 99341

Ok, voici quelques conseils, dans aucun ordre particulier de performance ;

  • Assurez-vous que les VMs fonctionnent sur du matériel virtuel modèle 7 (c'est indiqué dans le résumé de la VM).
  • Assurez-vous que tous les disques VM sont gros et non fins.
  • Mise à jour vers la version 4 update 1
  • Assurez-vous que toutes les VMs ont la dernière version de vmtools installée.
  • Pour les VMs W2K8, utilisez le contrôleur de disque 'LSI SAS' et les NICs vmxnet3.
  • Assurez-vous que le swapping est activé dans le système d'exploitation.
  • Désactiver les économiseurs d'écran
  • Réglez la mémoire tampon de l'image vidéo à 4 Mo ou moins.
  • Supprimez tout matériel virtuel inutile de toutes les VMs, comme les disquettes, le matériel série, parallèle, etc.
  • Comme le dit Zypher, ESX ne donnera pas une VM tout temps vCPU jusqu'à tous des vCPUs qui lui sont alloués sont disponibles - essayez de réduire le nombre de 4 à 3 ou 2 (n'ayez pas peur de donner à une VM 3, 5 ou 7 vCPUs, cela semble étrange mais fonctionne très bien), regardez également vos autres VMs, réduisez leurs vCPUs si elles n'en ont pas besoin - cette machine n'a pas vraiment beaucoup de cœurs
  • Assurez-vous que la virtualisation matérielle est activée dans le BIOS et que toutes les options de gestion de l'énergie sont adaptées aux performances.
  • Examinez les "parts" de votre VM, envisagez d'augmenter et/ou de diminuer les valeurs/priorités de vos différentes parts en fonction de leur importance et de leur comportement actuel. Examinez aussi sérieusement vos options de réservation - ces options peuvent faire une énorme différence dans une boîte contestée.
  • Ensuite, on examine évidemment les données de performance de la VM SQL, en particulier la mémoire disponible, le %RDY et la longueur des files d'attente/attente des disques.
  • Envisagez d'ajouter des disques à la matrice et/ou de fournir des vmdk's/datastores/disques dédiés à cette VM.

J'en ajouterai d'autres si je pense à quelque chose d'ok, bonne chance.

1voto

Eric Minkes Points 1051

Peut-être que la virtualisation n'est que le signe d'une base de données déjà peu performante. Bien que les performances des bases de données aient toujours été particulièrement problématiques lorsqu'elles étaient virtualisées, si le trafic n'est pas très élevé, il n'y a aucune raison pour que la base de données ne puisse pas fonctionner raisonnablement en conservant les données chaudes dans la RAM. Je vérifierais les performances de SQL en général et verrais s'il utilise les 3 Go de RAM alloués (pouvez-vous lui en donner plus ?), ainsi que des choses comme les index, les fichiers de base de données fragmentés, les mauvaises requêtes spécifiques qui peuvent bénéficier d'une réécriture ou utiliser des index supplémentaires, etc.

0voto

MDMarra Points 99815

Comme d'autres l'ont dit, 4vCPU sur une boîte avec seulement 8 cœurs au total, c'est beaucoup. Vous êtes probablement en train de vous heurter à un grand nombre de conflits d'ordonnancement de processeurs. Je le réduirais à un ou deux et je verrais si les performances s'améliorent et je continuerais à partir de là.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X