При установке Small Business Server 2011 целый ряд процессов w3wp.exe, по-видимому, использует непропорционально большой объем памяти. Готовая установка SBS включает в себя 7 сайтов и 20 пулов приложений ASP.NET (Sharepoint, Exchange, WSUS и SBS, например, Remote Web Workplace).
Результирующая дюжина процессов w3wp.exe имеет тенденцию занимать более 4 ГБ памяти сервера с течением времени, при этом пиковый пул приложений принадлежит тому, который принадлежит WSUS с около 800 МБ в рабочем наборе. Ручная переработка пулов приложений через IIS MMC помогает временно сократить использование памяти (процессы w3wp.exe сокращаются до 10 МБ, некоторые из них быстро вырастают), но, очевидно, это не то, что администратор хочет делать весь день. Мне не удалось найти какие-либо рекомендации по автоматической утилизации пулов приложений с предустановленной SBS, поэтому я несколько неохотно "просто делаю это" в производственных системах.
Мои исследования в сети о том, как ограничить это, привели к появлению ряда сообщений о том, что потребление памяти w3wp не ухудшит, а повысит производительность, поскольку память будет «освобождена, когда это потребуется другим приложениям». Беда в том, что не получается
- во-первых, SBS - это многоцелевой сервер, одной из ролей (главная из которых) является сетевое хранилище CIFS, которое извлекает огромную выгоду из кэширования файловой системы, которое опять-таки полагается на то, что память «свободна», как и «не используется другими процессами в любом путь »- пулы приложений ASP.NET, которые почти не видят пользователей и потребляют память, контрпродуктивны
- Другое дело, что мне все еще приходится видеть существенное снижение потребления памяти экземплярами w3wp при нехватке памяти - я вижу небольшое уменьшение, значительно меньшее, чем на 100 мегабайт, и чрезмерное переключение вместо этого - опять же снижается производительность
Я почти никогда не администрирую приложения IIS или ASP.NET, поэтому любые идеи о том, как эффективно сократить требования к памяти для пулов приложений, приветствуются.
источник
Ответы:
Добро пожаловать в чудесный мир SBS. Рекомендуемые требования к оперативной памяти = 10 ГБ ... и ТРЕБУЕТ минимум 8 ГБ. ( согласно Microsoft .) по уважительной причине. Это не отлаженная хорошо смазанная машина ... она очень неряшливая, раздутая, и все под солнцем связано. Чем больше оперативной памяти вы можете выбросить в эту коробку ... тем лучше. К сожалению, вы ограничены до 32 ГБ макс. Который имхо ... глупо.
источник
Это то, что я в итоге сделал:
установив низкое значение кэша серверных приложений для .NET AppPools (5 МБ), установив параметр privateBytesLimit в
web.config
at,%WINDIR%\Microsoft.NET\Framework\<version>\Config
как предлагается в этом ответе :Это помогло уменьшить использование памяти до более чем 1 ГБ с настройками рециркуляции пула по умолчанию.
По-видимому, использование «серверного» типа сборщика мусора (
<gcServer = "true">
) также может привести к значительному потреблению памяти , но, по-видимому,<gcServer>
по умолчанию имеет значение false.источник
Если вы подозреваете, что получающееся в результате потребление памяти является проблемой из-за дефекта программного обеспечения, вы можете использовать Microsoft DebugDiag 1.2 для создания полного дампа памяти и анализа дампа на наличие общих проблем. Если вы считаете, что может быть проблема с памятью, вам нужно включить отслеживание утечек, выбрав опцию «Отслеживать утечки» и подождать некоторое время, прежде чем создавать / анализировать дамп.
Скачать DebugDiag 1.2
https://www.microsoft.com/download/en/details.aspx?id=26798
источник
Вам не нужен отдельный пул приложений для каждого приложения, только те, которые ненадежны или которым вы хотите отдать приоритет. Многие могут поделиться (держа разные версии .net отдельно). Затем вы можете более реалистично ограничить объем памяти, который будет использовать пул приложений. Не должно быть необходимости повторно использовать пулы чаще, чем раз в день.
Кроме того, таким способом можно освободить только столько памяти. Хотя некоторые из них будут кэшироваться, каждому приложению требуется определенный объем рабочей памяти, который сильно зависит от конкретного веб-приложения. Попытка ограничить это слишком сильно приведет к полной остановке.
Проблема в том, что SBS пытается сделать слишком много одновременно, вам нужно посмотреть, что вы на самом деле используете, и отключить то, что вы не делаете.
Но, если честно, всего 11 пользователей, куда уходит остальная память? Exchange и SQL для легкого использования, конечно, не требуют больше, чем 12 ГБ!
источник