Tenemos una base de datos con una carga de trabajo mixta OLAP / OLTP. Las consultas son bastante ad-hoc y se crean dinámicamente en el servidor de aplicaciones de nivel medio. Cuando iniciamos el servidor, el rendimiento es bastante aceptable, pero el consumo de memoria aumenta cada vez más hasta que se agota toda la memoria disponible (30 GB). Después de eso, el sistema se vuelve más y más lento.
Los comandos como Dbcc freeproccache
no tienen efecto.
No hay muchas transacciones select * from sys.dm_tran_session_transactions
(no más que cuando el sistema está bien), algunas veces esta lista está vacía.
El primer resultado de dbcc memorystatus
es
VM Reserved 42136628
VM Committed 1487176
Locked Pages Allocated 24994048
Reserved Memory 1024
Reserved Memory In Use 0
Un reinicio de SQL Server resuelve el problema por un tiempo.
- ¿Qué causa este comportamiento? ¿Cómo se puede evitar?
- Si una solución real para la causa es demasiado difícil, ¿hay un comando que obligue a SQL Server a liberar toda la memoria sin un reinicio completo de DBMS?
El servidor se ejecuta en hardware dedicado (no en una VM). Teníamos algunos trabajos programados, pero los deshabilitamos por un tiempo, sin cambios. Hay otras aplicaciones de nivel medio que se ejecutan en el mismo servidor, pero no usan más de 2 GB de memoria, CPU insignificante y casi no E / S. Reiniciamos todas esas aplicaciones sin cambios.