web-dev-qa-db-fra.com

Limiter l'utilisation maximale du processeur SQL SERVER avec WSRM

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?

10
ManInMoon

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 avez peut-être 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. Le problème [[# # ~] [~ # ~] réapparaîtra et vous frappera face cachée lorsque la charge de travail du serveur augmentera naturellement avec la croissance.

En tant que correction temporaire, le gouverneur de ressources peut être utilisé pour réduire le processeur utilisé, JUSQU'À CE QUE VOUS TROUVEZ LE VRAI PROBLÈME.

14
George.Palacios

Erik Darling a mentionné la principale raison pratique de ne pas utiliser WSRM dans un commentaire sur votre question:

... il n'y a pas de limitation réciproque de l'utilisation du processeur dans d'autres processus. SQL Server peut ne pas utiliser ces deux cœurs, mais d'autres choses peuvent utiliser les 30 autres que SQL Server utilise. C'est vraiment un crapshoot.

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 résoudre les requêtes/problèmes sous-jacents qui conduisent le processeur au point de problèmes visibles par l'utilisateur (que George couvre dans son - excellente réponse ).

Erik poursuit en disant

De plus, vous payez des licences SQL Server pour eux.

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).

11
Josh Darnell