На основе этот поток, кажется "нормальным" для процесса MSMQ занимать большой объем доступной памяти, пока он не окажется под давлением памяти.
Кажется, что большинство инструментов мониторинга основывают использование памяти на памяти рабочего набора. Это включает тот, который мы сейчас используем (New Relic), который использует этот запрос PowerShell:
Get-WmiObject -Query "SELECT CommitLimit,CommittedBytes,AvailableBytes FROM
Win32_PerfRawData_PerfOS_Memory"
Диспетчер задач также, похоже, использует память рабочего набора для своего графика памяти по умолчанию.
Обычно мы наблюдаем скачок использования памяти (на основе рабочего набора) до 90% и выше, что, согласно приведенному выше потоку, не является ненормальным.
Достаточно ли стандартно видеть высокое использование памяти на машинах, использующих MSMQ? Это стандартная практика не контролировать использование памяти на этих машинах?
Использование памяти MSMQ напрямую связано с объемом сообщения. Если использование памяти велико, то MSMQ одновременно обрабатывает множество сообщений. Лучше решить, какой объем сообщений ожидается для повседневного использования, и предупредить, когда цифры станут выше этого уровня.
Также пункт 4 на блог Это важно, если считается нормальным большой объем сообщений.
Использование памяти во всех версиях Windows Vista + настроено так, чтобы хранить в памяти как можно больше данных. Это наиболее эффективный способ решения задач, поскольку он предотвращает чтение с диска, а очистка ненужных страниц из ОЗУ занимает значительно меньше времени, чем заполнение этих страниц с диска. Та же проблема, с которой вы сталкиваетесь, применима к серверам MSSQL, Exchange и всем остальным, где используется огромное количество ОЗУ, поскольку они будут загружать в ОЗУ столько, сколько возможно в любой момент.
Если вы не видите фактических проблем с операциями выгрузки страниц (перегрузка диска), ошибками нехватки памяти в других приложениях или проблемами производительности с другими приложениями, вы можете спокойно игнорировать высокий уровень использования памяти. Пустая оперативная память не нужна. И наоборот, если вы ожидаете высокого использования памяти на компьютере и видите нулевое использование, вероятно, проблема.
Что касается мониторинга использования памяти, если вы контролируете только общий объем используемой оперативной памяти, я бы перестал получать предупреждения на высоких уровнях. Продолжайте предупреждать о низком использовании ОЗУ так же, как о низком использовании ЦП на сервере, на котором есть приложения, которые поддерживают ЦП на уровне 20% (или что-то еще), когда холостой ход. Если вы отслеживаете, какое приложение использует какой объем памяти, и на сервере размещено несколько приложений, вы можете протестировать другие свои приложения без запуска MSMQ, чтобы вы могли получить точное представление о том, сколько оперативной памяти они будут использовать, если дано возможность и скорректировать распределение и мониторинг с учетом этих потребностей.
В нашей организации мы перестали отслеживать высокое потребление ОЗУ на всех серверах, которые, как мы ожидаем, должны быть загружены. он ничего не делает, кроме как запускает предупреждения, которые необходимо отключить, и скрывает правильные предупреждения.
это статья содержит некоторую высокоуровневую информацию о том, как управление памятью было изменено в Vista, с тех пор не было очень значительных изменений в диспетчере памяти, AFAIK.