Désolé d'être long, mais je veux vous donner autant d'informations que possible afin que cela puisse être utile à l'analyse.
Je sais qu'il y a plusieurs messages avec des problèmes similaires, cependant, j'ai déjà suivi ces différents messages et autres informations disponibles sur le Web, mais le problème persiste.
J'ai un grave problème de performances dans SQL Server qui rend les utilisateurs fous. Ce problème se prolonge depuis plusieurs années, et jusqu'à la fin de 2016 a été géré par une autre entité et à partir de 2017 est venu à être géré par moi.
Au milieu de 2017, j'ai pu résoudre le problème en suivant les conseils d'indexation indiqués par les rapports du tableau de bord des performances de Microsoft SQL Server 2012. L'effet était immédiat, cela sonnait comme par magie. Le processeur qui était dans les derniers jours presque toujours à 100%, est devenu super serein et les retours des utilisateurs ont été retentissants. Même notre technicien ERP était ravi, car il fallait généralement 20 minutes pour obtenir certaines listes et, finalement, il pouvait le faire en quelques secondes.
Au fil du temps, cependant, elle a lentement commencé à empirer. J'ai évité de créer plus d'index, de peur qu'un trop grand nombre d'index n'aggrave les performances. Mais à un moment donné, j'ai dû effacer ceux qui n'avaient pas d'utilité et créer les nouveaux que Performance Dashboard me suggère. Mais pas d'impact.
La lenteur ressentie se fait essentiellement lors de l'épargne et du conseil, dans l'ERP.
J'ai un Windows Server 2012 R2 dédié à SQL Server 2016 Enterprise (64 bits) avec la configuration suivante:
- Processeur: Intel Xeon CPU E5-2650 v3 @ 2,30 GHz
- Mémoire: 84 Go
- En termes de stockage, le serveur dispose d'un volume dédié au système d'exploitation, un autre dédié aux données et un autre dédié aux logs.
- 17 bases de données
- Utilisateurs:
- Dans la plus grande base de données sont connectés plus ou moins 113 utilisateurs simultanés
- Dans un autre, il y a environ 9 utilisateurs
- Dans deux d'entre eux sont 3 + 3
- Les autres n'ont qu'un seul utilisateur chacun
- Nous avons un site Web qui écrit également pour la plus grande base de données, mais où l'utilisation est beaucoup moins régulière et qui devrait compter environ 20 utilisateurs.
- Taille des DB:
- La plus grande des bases de données a 290 Go
- Le deuxième plus grand a 100 Go
- Le troisième plus grand a 20 Go
- Le quatrième 14 Go
- Le reste fait un peu plus de 3 Go chacun
Il s'agit de l'instance de production, mais nous avons également une instance de développement qui, je crois, peut être ignorée à cet effet, car la plupart du temps je suis le seul à y connecter, mais ce problème se produit constamment, même lorsque je ne suis pas connecté .
Le processeur est presque toujours comme ça:
Nous avons des routines qui fonctionnent pendant la nuit (pas problématique) et certaines qui fonctionnent pendant la journée.
Les utilisateurs se connectent via Remote Desktop à d'autres ordinateurs configurés par ODBC 32 pour accéder à SQL Server.
Le Datacenter où se trouvent les serveurs a 100/100 Mbps, ainsi que là où je suis. La plupart des sites sont liés par MPLS et d'autres par IPSec (de FO à 4G). Le fournisseur a fait de nombreuses analyses et le circuit est ok.
Le taux de réussite du cache est de 99% (à la fois les demandes des utilisateurs et les sessions des utilisateurs)
Les attentes ressemblent à ceci:
J'ai déjà collecté des données avec Perfmon et j'ai les résultats si cela peut aider votre analyse - personnellement, je n'ai tiré aucune conclusion de l'analyse.
Je compte sur votre soutien pour résoudre ce problème, étant disponible pour fournir les informations que vous jugez nécessaires à la résolution.
Merci beaucoup.
Voici la démarque sp_blitz (j'ai remplacé les noms d'entreprises par des pseudonymes):
Priorité 1: fiabilité :
Dernier bon DBCC CHECKDB de plus de 2 semaines
- Maître
modèle - Dernier succès CHECKDB: 2018-02-07 15: 04: 26.560
msdb - Dernière vérification réussie: 2018-02-07 15: 04: 27.740
Priorité 10: Performance :
CPU avec nombre impair de cœurs
Le nœud 0 a 5 cœurs affectés. C'est une configuration NUMA vraiment mauvaise.
Le nœud 1 a 5 cœurs affectés. C'est une configuration NUMA vraiment mauvaise.
Priorité 20: Configuration des fichiers :
- TempDB sur le lecteur C tempdb - La base de données tempdb contient des fichiers sur le lecteur C. TempDB croît fréquemment de façon imprévisible, ce qui expose votre serveur au risque de manquer d'espace disque C et de se bloquer brutalement. C est également souvent beaucoup plus lent que les autres disques, les performances peuvent donc en souffrir.
Priorité 50: Fiabilité :
- Erreurs enregistrées récemment dans la trace par défaut
- master - 2018-03-07 08: 43: 11.72 Erreur de connexion: 17892, gravité: 20, état: 1. 2018-03-07 08: 43: 11.72 La connexion a échoué pour la connexion 'example_user' en raison du déclenchement de l'exécution. [CLIENT: IPADDR]
(Remarque: de nombreuses erreurs comme celle-ci sont dues à un déclencheur activé qui limite les sessions utilisateur - pour le contrôle de l'utilisation des licences ERP)
Vérification de page non optimale
DATABASE_A - La base de données [DATABASE_A] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_B - La base de données [DATABASE_B] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_C - La base de données [DATABASE_C] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_D - La base de données [DATABASE_D] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_E - La base de données [DATABASE_E] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_F - La base de données [DATABASE_F] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_G - La base de données [DATABASE_G] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_H - La base de données [DATABASE_H] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_I - La base de données [DATABASE_I] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_Z - La base de données [DATABASE_Z] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_K - La base de données [DATABASE_K] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_J - La base de données [DATABASE_J] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_L - La base de données [DATABASE_L] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_M - La base de données [DATABASE_M] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_O - La base de données [DATABASE_O] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_P - La base de données [DATABASE_P] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_Q - La base de données [DATABASE_Q] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_R - La base de données [DATABASE_R] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_S - La base de données [DATABASE_S] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_T - La base de données [DATABASE_T] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_U - La base de données [DATABASE_U] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_V - La base de données [DATABASE_V] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DATABASE_X - La base de données [DATABASE_X] n'a AUCUN pour la vérification de page. SQL Server peut avoir plus de difficulté à reconnaître et à récupérer d'une corruption de stockage. Envisagez plutôt d'utiliser CHECKSUM.
DAC distant désactivé - L'accès à distance à la connexion d'administration dédiée (DAC) n'est pas activé. Le DAC peut faciliter le dépannage à distance lorsque SQL Server ne répond pas.
Priorité 50: Informations sur le serveur :
- Initialisation instantanée des fichiers non activée - Envisagez d'activer IFI pour des restaurations plus rapides et des croissances de fichiers de données.
Priorité 100: Performance :
Facteur de remplissage modifié
DATABASE_A - La base de données [DATABASE_A] contient 417 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_B - La base de données [DATABASE_B] contient 318 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_C - La base de données [DATABASE_C] contient 346 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_D - La base de données [DATABASE_D] contient 663 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_E - La base de données [DATABASE_E] contient 335 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_F - La base de données [DATABASE_F] contient 1705 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_G - La base de données [DATABASE_G] contient 671 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_H - La base de données [DATABASE_H] a 2364 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_I - La base de données [DATABASE_I] contient 1658 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_Z - La base de données [DATABASE_Z] contient 673 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_K - La base de données [DATABASE_K] contient 312 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_J - La base de données [DATABASE_J] a 864 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_L - La base de données [DATABASE_L] contient 1170 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_M - La base de données [DATABASE_M] contient 382 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_O - La base de données [DATABASE_O] contient 356 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
msdb - La base de données [msdb] contient 8 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_P - La base de données [DATABASE_P] contient 291 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_Q - La base de données [DATABASE_Q] contient 343 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_R - La base de données [DATABASE_R] contient 2048 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_S - La base de données [DATABASE_S] contient 325 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_T - La base de données [DATABASE_T] contient 322 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_U - La base de données [DATABASE_U] contient 351 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_V - La base de données [DATABASE_V] contient 312 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
DATABASE_X - La base de données [DATABASE_X] contient 352 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
tempdb - La base de données [tempdb] contient 2 objets avec un facteur de remplissage = 70%. Cela peut entraîner des problèmes de performances de mémoire et de stockage, mais peut également empêcher les fractionnements de page.
De nombreux plans pour une seule requête - 20763 plans sont présents pour une seule requête dans le cache de plan - ce qui signifie que nous avons probablement des problèmes de paramétrage.
Déclencheurs de serveur activés - Le déclencheur de serveur [connection_limit_trigger] est activé. Assurez-vous de comprendre ce que fait ce déclencheur - moins il fait de travail, mieux c'est.
Procédure stockée AVEC RECOMPILE
master - [master]. [dbo]. [sp_AllNightLog] contient WITH RECOMPILE dans le code de procédure stockée, ce qui peut entraîner une utilisation accrue du processeur en raison de recompilations constantes du code.
master - [master]. [dbo]. [sp_AllNightLog_Setup] contient WITH RECOMPILE dans le code de procédure stockée, ce qui peut entraîner une utilisation accrue du processeur en raison de recompilations constantes du code.
Priorité 110: performances :
Tables actives sans index cluster
DATABASE_A - La base de données [DATABASE_A] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_B - La base de données [DATABASE_B] contient des tas - des tables sans index cluster - qui sont activement interrogés.
DATABASE_C - La base de données [DATABASE_C] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_E - La base de données [DATABASE_E] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_F - La base de données [DATABASE_F] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_H - La base de données [DATABASE_H] contient des tas - des tables sans index cluster - qui sont activement interrogés.
DATABASE_I - La base de données [DATABASE_I] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_K - La base de données [DATABASE_K] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_O - La base de données [DATABASE_O] a des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_Q - La base de données [DATABASE_Q] contient des tas - des tables sans index cluster - qui sont activement interrogés.
DATABASE_S - La base de données [DATABASE_S] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_T - La base de données [DATABASE_T] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_U - La base de données [DATABASE_U] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_V - La base de données [DATABASE_V] contient des tas - tables sans index cluster - qui sont activement interrogés.
DATABASE_X - La base de données [DATABASE_X] contient des tas - tables sans index cluster - qui sont activement interrogés.
Priorité 150: Performance :
(Remarque: Nany conseille ici, mais je n'ai pas pu les inclure en raison de la limitation des caractères. S'il existe une autre façon de partager, veuillez l'indiquer.)