Примерно раз в неделю у моего MSSQL-сервера истекает таймаут, или, скорее, на машине заканчивается ОЗУ. Сегодня утром он достиг 3,9 ГБ из 4 доступных, при этом MSSQL занял 2,5 ГБ.
Меня беспокоит, что я не настроил SQL для высвобождения памяти должным образом, поэтому я запустил sp_who2 во время тайм-аутов, чтобы увидеть, какой процесс выполняется.
Однако, если бы я мог опубликовать файл данных CSV, то всего было бы 85 процессов, в основном связанных с полнотекстовой службой:
FT Gatherer - около 35 из них работают под учетной записью sa в главной базе данных со статусом спящего или фонового, многие из них зависели от других процессов. Это нормально?
База данных MySite - для одного активного сайта / базы данных было всего 5 процессов, и все они либо спали, либо были приостановлены, но их даты последней партии были установлены на 1/12/2020. Это нормально?
Размер базы данных составляет всего около 20 МБ, уровни трафика очень низкие, поэтому я думаю, возможно, ограничить объем оперативной памяти, к которой имеет доступ SQL (от неограниченного до, возможно, 2 ГБ).
Любые мысли / советы будут оценены.
Мны спасибо
Бен
Вы всегда должны настраивать SQL с верхним пределом, иначе он займет всю доступную память. С 4 гигабайтами ОЗУ и только 20-мегабайтной базой данных ограничение памяти в 2 гигабайта должно быть более чем достаточно.
Вы используете для чего-нибудь полный текст?
Указывает ли журнал системных событий на ошибки, когда это происходит?
Указывает ли журнал SQL на взаимоблокировки или любую другую возможную причину тайм-аута?
Вы уверены, что это проблема с SQL, а не из-за того, что на сервере работает что-то еще (намеренно или иным образом)?
Попробуй это. Установите средства отладки для Windows. Запустите windbg.exe на консоли и оставьте его включенным. Вам нужно будет выбрать File> Kernel Debug> Local tab. В следующий раз введите команду! Vm, которая предоставит вам полную картину всего использования памяти на сервере.
Вы используете x86 и используете переключатель / 3GB в boot.ini? В этом сценарии на 32-битной архитектуре x86 вы предрасположены к дополнительной нагрузке на память ядра (выгружаемые / невыгружаемые пулы, системные PTE и кеш файловой системы), поскольку / 3GB оставляет только 1 ГБ для ОС.
На x86 при запуске! Vm вы должны увидеть что-то вроде этого:
NonPagedPool Max: 65281 ( 261124 Kb)
PagedPool Maximum: 134144 ( 536576 Kb)
Эти числа могут варьироваться, так как они устанавливаются динамически при запуске. Когда у вас есть возникновение, вы можете сравнить использование с максимальным, чтобы определить, является ли это проблемой памяти ядра.
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx