Бөлісу құралы:


Регулирование

Если уровень физической памяти на узле кэша Microsoft AppFabric 1.1 для Windows Server становится низким, то узел может войти в состояние регулирования. Кластер кэша не записывает данные в кэш, расположенный на регулируемом узле кэша, до момента повышения уровня доступной физической памяти и устранения нехватки.

Диагностика регулирования

Наиболее очевидным симптомом регулирования является поведение приложений. Попытки записи в кэш будут вызывать ошибки DataCacheException. Дополнительные сведения об этом исключении см. в разделе RetryLater (регулировка). Чтобы убедиться в том, что в кластере возникла проблема регулирования, используйте один или несколько тестов.

  • Используйте команду Windows PowerShell Get-CacheClusterHealth. Проверьте, есть ли узлы кэшей с процентными значениями в категории Throttled.

  • Включите журнал Operational в средстве просмотра событий на каждом из узлов кэша и просмотрите его на наличие события 116 «Service in throttled state».

  • Используйте системный монитор для обслуживания счетчика Память | Доступно мегабайт на каждом из узлов. Если это значение опускается ниже 15% от общего объема памяти, то узел кэша переходит в состояние регулирования. Регулирование также возникает при приближении уровня памяти на 4% к значению CacheSize.

Обратите внимание на то, что сервер в состоянии регулирования будет чаще выполнять вытеснение. Дополнительные сведения о проблемах с вытеснением см. в разделе Вытеснение.

Примечание

Дополнительные сведения об описанных средствах см. в разделе Средства наблюдения за работоспособностью (кэширование в AppFabric 1.1).

Устранение регулирования

Перед выбором метода устранения регулирования следует понять причину возникновения этого состояния. В приведенной ниже таблице описана возможная причина и рекомендуемое решение.

Причина регулирования Описание и устранение

Другие процессы используют слишком много памяти.

Другие процессы узла кэша могут использовать большие объемы памяти. Это может вызвать нехватку памяти в зависимости от объема памяти, зарезервированного для службы кэширования. Счетчик Процесс | Байты исключительного пользования в системном мониторе позволяет просмотреть память, используемую для каждого из процессов, чтобы определить подобное состояние. Если служба кэширования DistributedCacheService.exe не является основным потребителем памяти, найдите другие процессы, потребляющие большую долю памяти. Одним из решений является перемещение проблемных процессов на другие серверы, которые не являются узлами кэша. Кроме того, к компьютеру можно добавить дополнительную память.

Примечание

Несмотря на то, что команда Set-CacheHostConfig устанавливает размер кэша для узла, это ограничение определяет только момент запуска вытеснения. Это значение не гарантирует удержания памяти кэша на данном уровне или ниже данного уровня. Дополнительные сведения см. в разделе Вытеснение.

Служба кэширования использует слишком много памяти.

Для определения этой ситуации можно использовать диспетчер задач или системный монитор и просмотреть объем памяти, используемый службой кэширования DistributedCacheService.exe. Возможно, что в одном или нескольких кэшах отключен срок действия и/или вытеснение. Это может служить причиной нехватки памяти. Чтобы определить кэши кластера, используйте команду Windows PowerShell Get-Cache -MaxRegions 0. Параметры каждого кэша можно просмотреть с помощью команды Get-CacheConfig. Дополнительные сведения о сроке действия и истечении см. в разделе Срок действия и вытеснение. Потребности кластера кэша превышают мощность. Можно добавить дополнительную физическую память к узлам кэшей или добавить дополнительные узлы кэша в кластер.

Несобранная память .NET.

Несмотря на то, что сборка мусора .NET выполняется автоматически, в некоторых случаях несобранная память в промежутках между сборками может вызывать нехватку памяти. В этом случае следует использовать команду Windows PowerShell Invoke-CacheGC на регулируемом узле кэша для выполнения полного цикла сборки мусора. Если нехватка памяти после этого не будет устранена, то несобранная память .NET не является причиной регулирования.

Настраиваемые области.

Приложения могут создавать настраиваемые области с помощью метода CreateRegion. Эти регионы всегда существуют в виде единицы в определенном узле кэша. Если приложение сохраняет большие объемы данных в одну область, то один из узлов может перейти в состояние регулирования даже в том случае, если на других узлах достаточно памяти. Одним из решений этой проблемы является добавление памяти к каждому из узлов кластера, так как невозможно точно определить, какой из узлов выбирается для настраиваемой области. Другим решением является изменение структуры приложения для хранения меньшего объема данных в области или создание и использование нескольких областей.

Таблицы хэш-кодов тегов

Некоторые методы Кэш AppFabric позволяют хранить элементы в кэше со связанными тегами. При использовании тегов создаются внутренние таблицы хэш-кодов, которые не удаляются даже после удаления связанных элементов. Это не утечка памяти, но может являться сопутствующим фактором, повышающим общий уровень использования памяти службой Кэш AppFabric. Если приложение использует изменяющиеся теги, это также может повышать нагрузку на память.

См. также

Основные понятия

Устранение неполадок сервера

  2012-03-05