У нас возникают проблемы с нестабильностью некоторых из 32-разрядных систем Windows 2003 TS.
После долгого поиска в Google я подозреваю, что в нем заканчиваются записи в таблице страниц (PTE).
Из того, что я могу понять, это проблема при использовании переключателя / 3gb на 32-битных серверах Windows, а с TS 'вы можете легко достичь предела.
Как вы можете проверить, что именно происходит? У меня нет опыта работы с perfmon и ограниченный опыт работы с Process Explorer, и я действительно не знаю, что ищу.
Больше информации: Всегда, когда это происходит, список процессов диспетчера задач пуст, также сбрасываются счетчики памяти. Когда это происходит, на сервере обычно работает около 65 пользователей, но они используют MSO и другое бухгалтерское программное обеспечение. Некоторые из них написаны довольно плохо и раздуты. Общее использование памяти на одного пользователя составляет 200-600 МБ, но на наших серверах никогда не заканчивается доступная оперативная память. На серверах установлено несколько принтеров, иногда до 20. Несколько лет назад серверы работали без сбоев с 70-80 пользователями, но были сокращены, поскольку это, казалось, стабилизировало их.
Память ядра Windows Server 2003 x86 по умолчанию явно недостаточно сконфигурирована для интенсивно используемого терминального сервера.
Чтобы просмотреть фактические значения, используемые в работающей системе, вы можете использовать SysInternal Process Explorer в разделе «Просмотр»> «Информация о системе». Если система настроена на использование максимального количества выгружаемого пула и невыгружаемого пула, то выгружаемый предел будет 512 МБ, а невыгружаемый предел - 256 МБ.
Чтобы показать этот уровень детализации, соответствующие символы должны быть загружены в Options> Configure Symbols:
Если количество физических или невыгружаемых страниц приближается к пределу, будет нестабильность системы. Значения реестра, которые настраивают эти максимальные ограничения, расположены по адресу:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"PagedPoolSize"=dword:FFFFFFFF
"SystemPages"=dword:FFFFFFFF
Стоит отметить, что наличие большого объема физической памяти может быть бесполезным, поскольку окна x86 могут использовать только довольно небольшой объем для пространства памяти ядра, и он не может расти сверх того, что указано в пределе. (Пределы памяти ядра x64 гораздо менее строгие). Предел рассчитывается динамически во время запуска системы на основе доступной памяти и настроек реестра.
Вы можете получить более подробную информацию о том, что использует память ядра, с помощью следующих команд Windows Debugger:
!vm
- показывает информацию, аналогичную ограничениям памяти ядра проводника процессов.
! poolused n
- отображает информацию об использовании выгружаемого / невыгружаемого пула. Иногда это может быть полезно, если у драйвера есть утечка памяти, которая потребляет слишком много памяти ядра.
! poolused команда
http://msdn.microsoft.com/en-us/library/windows/hardware/ff564700%28v=vs.85%29.aspx
! vm команда
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565602%28v=vs.85%29.aspx
Мне кажется, что от 70 до 80 пользователей на 32-битном TS - это много. Наше плановое количество всегда составляло от 50 до 65 пользователей. Сколько оперативной памяти на серверах?
Использование / 3GB на TS вызовет проблемы с производительностью и стабильностью. Я видел это воочию. Он начинается с невозможности загрузить профили пользователей и быстро переходит к этому. Я предлагаю удалить переключатель / 3GB и посмотреть, как это повлияет на производительность и стабильность.
Вы можете найти описание того, как определить использование памяти ядра, в моей статье. Windows x64 - все то же самое, но очень разные, часть 2: память ядра, / 3 ГБ, PTE, (не) выгружаемый пул.
Короче говоря, используя WinDbg в сочетании с LiveKD, вы можете установить сеанс отладки в реальном времени с локальной машиной. Оттуда легко запросить такие вещи, как бесплатные PTE, использование и максимальное количество (не) выгружаемого пула.