Недостаточно системной памяти в пуле ресурсов "default" для запуска этого запроса. на sql
У меня есть работающий сервис, который получает 50-100 запросов в минуту. И это не дорогостоящие запросы. Эта служба работает около 3-4 месяцев без каких-либо ошибок.
Неожиданно несколько дней назад он начал давать "Недостаточно системной памяти в пуле ресурсов" по умолчанию "для запуска этого запроса." ошибка изредка. Когда я исследовал проблему, я увидел, что sqlservr.exe
использовал ~ 1.5 gb ram и% 25 CPU (все 1/4CPU). И когда я перезапустил sqlservr.exe
, барабан начинается с ~ 50 МБ и медленно увеличивается, пока он не станет ~ 1,5 ГБ, а затем приведет к сбоям в приложениях, использующих его.
После того, как я сделал небольшое исследование, я подумал, что это вызвано выпуском сервера sql, который я использую. Это было выраженное издание, ограничивающее номера. Поэтому я обновил свой sql-сервер от '2008r2 express' до '2012 enterprise. Когда я начал службу, я подумал, что мои проблемы, наконец, закончились, поскольку служба использует только ~ 60 мб памяти, но через час, к сожалению, эта же проблема возникла, но на этот раз используемая память, которую я вижу в диспетчере задач Windows, все еще ~ 60 Мб, не превышая никаких ограничений.
Я использую EntityFramework
как ORM в службе wcf. И вместе с этим у меня есть система SqlQueryNotification
(брокер и прочее) для некоторых операций кеширования.
Не хватает ли некоторых важных точек конфигурации? Или 6 гб памяти и моего 4-го процессора действительно недостаточно для этого? Но это не может быть так, потому что одна и та же загрузка была такой, как в течение 3 месяцев, и тогда не было никакой ошибки, и нет никаких изменений в кодах.
![ram allocated]()
![ram usage]()
Ответы
Ответ 1
SQL Server начнет с того, что потребуется столько памяти, а затем медленно наращивается, пока он не использует все выделенные ему свойства сервера:
![введите описание изображения здесь]()
Он не освободит какую-либо из этой памяти до перезапуска службы; это по дизайну.
Обычно рекомендуется оставить 2 GB для ОС, и вам нужно помнить о любой другой обработке, выполняемой на том же сервере, что и SQL. Обычно рекомендуется иметь SQL Server на своем сервере без каких-либо других операций.
Тем не менее, 1,5 ГБ оперативной памяти для SQL Server не так уж и много. Если у вас больше нет доступа, возможно, пора добавить или обновить сервер.
См. также:
Technet, Brent Ozar