Le serveur de base de données que j'utilise exécute 6 instances SQL Server différentes. Il a 48 Go de RAM. Et l'un d'eux consomme plus de 10 Go de RAM, la consommation totale est de 20 Go pour l'instant. La consommation de RAM ne cesse de croître. Quelques jours avant, il utilisait plus de 40 Go de RAM et le serveur répondait très lentement. L'application montre les problèmes de plantage lors de l'enregistrement des données.
J'ai donc redémarré les services SQL Server.
Dès que les services ont été redémarrés, l'utilisation est tombée à 4 Go, mais elle augmente maintenant. Et je crains que cela n'augmente jusqu'à 40 Go en 4 ou 5 jours et ralentisse le serveur.
Le redémarrage du service n'est pas la bonne option, je suppose.
J'ai également découvert à partir de différentes sources que nous pouvons définir la taille maximale d'utilisation de la mémoire pour SQL Server. Et je ne sais pas trop si cela va aider ou non. Je ne peux pas tester cela car le serveur utilise la base de données de production et ce serait un risque si le service s'arrête lors de la modification du paramètre dans SQL Server.
Quelqu'un peut-il aider à résoudre ce problème?
Réponses:
C'est par conception. SQL Server est censé utiliser toute la mémoire disponible, car il stocke de plus en plus de données en mémoire de sorte qu'il n'a pas besoin de revenir sur le disque pour obtenir la même mémoire encore et encore.
Si vous devez limiter la quantité de mémoire utilisée par une seule instance SQL Server, vous pouvez le faire dans SQL Server Management Studio en cliquant avec le bouton droit sur le nom de l'instance dans l'Explorateur d'objets et en sélectionnant les propriétés. Sélectionnez ensuite l'onglet mémoire et définissez la quantité maximale de mémoire que SQL Server sera autorisé à utiliser. Maintenant, cela ne va pas limiter tous les aspects de SQL Server à cette quantité de mémoire. Cela contrôle uniquement le pool de tampons et le cache du plan d'exécution. Des choses comme CLR, Texte intégral, la mémoire réelle utilisée par les fichiers exe SQL Server, SQL Agent, les procédures stockées étendues, etc. ne sont pas contrôlées par ce paramètre. Cependant, ces autres choses n'ont généralement pas besoin de beaucoup de mémoire, ce sont le pool de tampons et le cache du plan d'exécution qui nécessitent la majeure partie de la mémoire.
Si vous définissez ce paramètre sur une seule instance, vous souhaiterez le définir sur toutes les instances afin qu'elles ne se piétinent pas.
la source