Назад | Перейти на главную страницу

MSSQL Тайм-аут, пара вопросов

Примерно раз в неделю у моего MSSQL-сервера истекает таймаут, или, скорее, на машине заканчивается ОЗУ. Сегодня утром он достиг 3,9 ГБ из 4 доступных, при этом MSSQL занял 2,5 ГБ.

Меня беспокоит, что я не настроил SQL для высвобождения памяти должным образом, поэтому я запустил sp_who2 во время тайм-аутов, чтобы увидеть, какой процесс выполняется.

Однако, если бы я мог опубликовать файл данных CSV, то всего было бы 85 процессов, в основном связанных с полнотекстовой службой:

  1. FT Gatherer - около 35 из них работают под учетной записью sa в главной базе данных со статусом спящего или фонового, многие из них зависели от других процессов. Это нормально?

  2. База данных 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