Использование невыгружаемой памяти повышается процессом ДАЖЕ (регистратор событий / просмотрщик) до его исчерпания

У меня есть сервер с проблемой невыгружаемой памяти. Использование медленно поднимается, пока не исчерпается, и сервер перестает обслуживать веб-страницы, так как IIS не может получить достаточно невыгружаемой памяти.

Это 32-битный сервер Windows 2003.

Диспетчер задач не показывает подозрительной активности, и все запущенные процессы потребляют "нормальные" объемы памяти NP, и все они остаются стабильными с течением времени.

Тэг, показывающий все использование, является 'Even', который предназначен для просмотра событий в соответствии со списком тэгов. Никакие другие предупреждения или ошибки не отображаются в журналах событий, кроме случаев, когда память NP исчерпана и IIS начинает жаловаться.

Сервер работает MSSQL, IIS и hMailserver, ничего больше.

Кто-нибудь есть какие-либо идеи или видел это раньше..? Мне было бы куда пойти, если бы это был тег, связанный с драйвером, таким как сетевая карта или что-то еще, кроме Event Viewer, куда мне идти с этим!

Выход Poolmon для EVEN

Tag    Type   Allocs            Frees             Diff     Bytes       Per    Alloc
Even   NonP   65563201 ( 948)   64585254 ( 861)   980124   47049280 ( -2384)   48

Спасибо

2 ответа

Первое, что я проверю, это чтобы убедиться, что max server memory (MB) устанавливается в SQL Server. Это опция сервера, которая сообщает SQL Server "это вся память, которую вы можете иметь". По умолчанию SQL Server будет использовать всю доступную память для таких вещей, как кеширование данных, что может быть плохой новостью в общей среде, такой как у вас.

В вашем экземпляре SQL откройте новое окно запроса и введите:

sp_configure 'show advanced options',1
GO
RECONFIGURE
GO
sp_configure 'max server memory (MB)'

Если значение для config_value 0, то это означает, что SQL Server разрешено занимать всю необходимую память. В этом случае вы должны установить что-то более разумное для вашей среды.

Вы не упоминаете, сколько памяти имеет ваш сервер, но, поскольку вы находитесь в 32-битной среде (и вы также не указываете, какой выпуск Windows), я собираюсь продолжить и предположить 4 ГБ. Возможно, вы захотите ограничить SQL до 1 ГБ, чтобы включить другие службы приложений. Вы можете сделать это так:

sp_configure 'max server memory (MB)',1000
GO
RECONFIGURE
GO

Если вы используете Windows 2003 Enterprise и у вас есть> 4 ГБ памяти, вы, конечно, можете установить максимальный объем памяти больше этого.

Возможно, вы также захотите исследовать с помощью расширений адресного окна (AWE), которые могут дать вам больше передышки. Вы можете прочитать об этом на TechNet здесь.

Когда проблема возникает, откройте диспетчер задач и добавьте Handles колонка. Сортируйте по этому столбцу и ищите любые значения, которые кажутся чрезмерными. Это может помочь получить базовый уровень сервера при загрузке и с течением времени. Сколько времени после загрузки обычно требуется, чтобы увидеть проблему? Существует большая вероятность того, что процесс с наибольшим / необычным количеством ручек станет вашим виновником, хотя и точно определит, почему это может быть совсем другой зверь.

В моем случае я видел, что это вызвано неудачной деинсталляцией агента CommVault (резервное копирование), которая оставила нефункциональную службу, создававшую два дескриптора HKCU (реестр) каждые несколько секунд. Каждый открытый дескриптор потребляет некоторую память и в конечном итоге ставит на колени всю среду Exchange организации.

Sysinternals handle.exe также может быть полезно увидеть, какие процессы используют множество дескрипторов и к каким объектам прикреплены.

Другие вопросы по тегам