J'ai un serveur physique exécutant une instance de SQL Server.
Je remarque que ce serveur fonctionne assez souvent à 100% d'utilisation du processeur.
Mon équipe informatique n'est pas satisfaite de cela et a suggéré de réserver 2 des 32 cœurs pour le système d'exploitation.
Cela fonctionne très bien, maintenant le pic d'utilisation maximum un peu moins de 90%. De plus, la récupération lente des données de divers utilisateurs n'est plus signalée.
Y a-t-il une raison de NE PAS utiliser WSRM (Gestionnaire de ressources système Windows) de cette manière - au lieu du gouverneur de ressources SQL?
sql-server
configuration
windows
resource-governor
ManInMoon
la source
la source
Réponses:
Y a-t-il une raison de NE PAS utiliser l'approche que vous avez définie? Absolument.
Imaginez que vous ayez acheté une voiture - une voiture qui, lorsque vous atteignez 50 mi / h, le moteur commence à surchauffer. Souhaitez-vous réagir à cette situation pour limiter artificiellement la voiture à 49 MPH, ou pour découvrir quel est le problème avec le moteur?
Pourquoi devriez-vous limiter votre voiture à 49MPH? Le fabricant a déclaré qu'il pouvait rouler aussi vite que 80 MPH - vous aimez conduire votre voiture rapidement, donc vous voulez l'amener à cette vitesse - sans ce putain de problème de surchauffe.
La voiture que vous avez achetée était aussi vraiment, vraiment chère. Chaque cylindre du moteur doit être utilisé au maximum pour ne pas gaspiller cet argent!
En limitant artificiellement l'accès des serveurs SQL au processeur, vous manquez les performances. Vous pouvez avoir résolu temporairement les problèmes de performances en vous assurant que le processeur est disponible pour le système d'exploitation, mais vous n'avez pas répondu à la vraie question - POURQUOI SQL Server utilise-t-il 100% du processeur?
Mon conseil est le suivant:
Découvrez quel est le vrai problème et corrigez-le. Ne couvrez pas le problème avec ce qui est effectivement un coup de coude. La question FERA réapparaît et vous gifler face à la ligne lorsque la charge de travail du serveur augmente naturellement avec la croissance.
En tant que correctif temporaire , le gouverneur de ressources peut être utilisé pour réduire le processeur utilisé, JUSQU'À CE QUE VOUS TROUVEZ LE VRAI PROBLÈME.
la source
Erik Darling a mentionné la principale raison pratique de ne pas utiliser WSRM dans un commentaire sur votre question:
Si cela fonctionne pour vous, alors respectez-le - nous sommes tous occupés et vous ne pouvez passer autant de temps que sur un problème donné. La solution idéale serait de corriger les requêtes / problèmes sous-jacents qui conduisent le processeur au point de problèmes visibles par l'utilisateur (ce que George couvre dans son excellente réponse ).
Erik poursuit en disant
D'un point de vue commercial, c'est probablement la pire partie de l'accord WSRM - vous payez des licences par cœur pour 2 cœurs qui ne sont explicitement pas utilisés. Au moment d'écrire ces lignes, il restait 3 000 $ ou 14 000 $ sur la table (selon Standard vs Enterprise).
la source