На нашем сервере с 32 ГБ оперативной памяти у нас есть экземпляр SQL Server, который ограничен максимальной памятью на 80%.
Все работает нормально, когда использование памяти невелико. См. Снимок экрана ниже.
Но со временем, через 3-4 дня, SQL будет использовать полную RAM (80% от общего числа).
В течение этих 3-4 дней мы не делаем никаких изменений на сервере, но с каждым днем он продолжает потреблять больше ОЗУ.
Когда он достигает Max Limit, вся производительность идет за броском, и мы сталкиваемся с таймаутами запросов на нашем веб-сайте. Выполнение того же запроса, который выполнялся в течение миллисекунд, занимает много секунд.
В этот момент у нас нет выбора, кроме как перезагрузить весь сервер, и все вернется в нормальное состояние. (Перезапуск службы только не работает)
Это будет работать в течение недели или около того, после чего мы должны снова перезапустить его
Я читал онлайн, что SQL-сервер не выпускает память. Но они также упоминали, что именно так работает SQL, но не влияет на производительность. В моем случае это происходит, и производительность страдает.
Есть ли утечка памяти? Или хранимая процедура, потребляющая много памяти и никогда не выпускающая ее? Если да, то как его отладить?