Nous avons un serveur SQL avec environ 40 bases de données différentes (environ 1-5 Go chacune). Le serveur est un processeur 2.3G à 8 cœurs avec 32 Go de RAM. 27Gig est épinglé à SQL Server. L’utilisation du processeur est presque toujours proche de 100% et la consommation de mémoire est d’environ 95%. Le problème ici est le processeur qui est constamment proche de 100% et tente de comprendre la raison.
J'ai effectué une vérification initiale pour voir quelle base de données contribue à un processeur élevé en utilisant - this script, mais je n'ai pas pu expliquer en détail ce qui consomme réellement du processeur. La requête principale (de toutes les bases de données) ne prend que 4 secondes environ. IO n'est également pas un goulot d'étranglement.
Mémoire serait le coupable ici? J'ai vérifié la division de mémoire et OBJECT CACHE occupe environ 80% de la mémoire allouée (27G) à SQL Server. J'espère que c'est normal à condition qu'il y ait beaucoup de PS impliqués. En exécutant le profileur, je vois beaucoup de recompilations, mais la plupart sont dues à une "table temporaire modifiée", à "une compilation différée" etc.
Appréciez toutes les pensées.
Vous pouvez voir quelques rapports dans SSMS:
Cliquez avec le bouton droit sur le nom de l'instance/reports/standard/top sessions.
Vous pouvez voir les meilleures sessions gourmandes en processeur. Cela peut permettre de mieux comprendre quels processus SQL utilisent des ressources. Si vous regardez autour de vous, il existe quelques autres rapports sur la CPU. J'allais indiquer quelques autres DMV, mais si vous avez déjà examiné cela, je l'ignorerai.
Vous pouvez utiliser sp_BlitzCache pour rechercher les principales requêtes consommant de la CPU. Vous pouvez également trier par IO et d’autres choses. Ceci utilise les informations DMV qui s’accumulent entre les redémarrages.
Cet article semble prometteur.
Quelques superpositions bonté de M. Ozar.
Selon this article sur sqlserverstudymaterial;
N'oubliez pas que "% de temps privilégié" n'est pas basé sur 100%. Il est basé sur le nombre de processeurs.Si vous voyez 200 pour sqlserver.exe et que le système dispose de 8 CPU, le nombre de processeurs utilisés par sqlserver.exe est de 200 25%).
Si la valeur "% temps privilégié" est supérieure à 30%, cela est généralement dû à des pilotes défectueux ou à un logiciel anti-virus. Dans de telles situations, assurez-vous que les lecteurs de BIOS et de filtre sont à jour, puis essayez de désactiver temporairement le logiciel antivirus pour voir la modification.
Si "% User Time" est élevé, il y a quelque chose qui consomme SQL Server . Plusieurs modèles connus peuvent être à l’origine d’un processeur élevé pour les processus exécutés dans SQL Server, notamment: