Nous avons une base de données avec une charge de travail mixte OLAP / OLTP. Les requêtes sont assez ponctuelles et sont créées dynamiquement dans le serveur d'applications de niveau intermédiaire. Lorsque nous démarrons le serveur, les performances sont tout à fait acceptables, mais la consommation de mémoire augmente de plus en plus jusqu'à ce que toute la mémoire disponible (30 Go) soit épuisée. Après cela, le système devient de plus en plus lent.
Les commandes comme Dbcc freeproccache
n'ont aucun effet.
Il n'y a pas beaucoup de transactions select * from sys.dm_tran_session_transactions
(pas plus que lorsque le système fonctionne bien), cette liste est parfois vide.
Le premier résultat dbcc memorystatus
est -
VM Reserved 42136628
VM Committed 1487176
Locked Pages Allocated 24994048
Reserved Memory 1024
Reserved Memory In Use 0
Un redémarrage de SQL Server résout le problème pendant un certain temps.
- Qu'est-ce qui cause ce comportement? comment ca peut etre evite?
- Si une véritable solution à la cause est trop difficile, existe-t-il une commande qui force SQL Server à libérer toute la mémoire sans redémarrage complet du SGBD?
Le serveur fonctionne sur du matériel dédié (pas une VM). Nous avions des emplois programmés, mais nous les avons désactivés pendant un certain temps, sans changement. Il existe d'autres applications de niveau intermédiaire exécutées sur le même serveur, mais elles n'utilisent pas plus de 2 Go de mémoire, un processeur négligeable et presque aucune E / S. Nous avons redémarré toutes ces applications sans changement.