Поделиться через


Устранение неполадок вытеснения (кэширование Windows Server AppFabric)

Кластер кэша Windows Server AppFabric использует вытеснение для управления объемом памяти, который используется службой кэширования на узле кэша Вытеснение выполняется в двух случаях:

  • Доступный объем физической памяти сервера критически низок.

  • Объем используемой памяти службы кэширования превышает верхний предел для узла кэша.

Вытеснение не обязательно свидетельствует об ошибке. При наличии аномально высокого уровня активности на кластере кэша вытеснение позволит удалить список недавно открытых элементов и предотвратить проблемы нехватки памяти. Дополнительные сведения о регулировании см. в документе Устранение неполадок регулирования (кэширование Windows Server AppFabric). При этом регулярные прогоны вытеснения могут свидетельствовать о нехватке памяти или ошибке конфигурации на узле кэша или нескольких узлах.

Дополнительные сведения о вытеснении см. в документе Окончание срока действия и вытеснение.

Диагностика ошибок вытеснения

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

Чтобы оценить частоту прогонов вытеснения, можно использовать системный монитор, позволяющий записывать два или четыре счетчика.

Счетчик Описание

AppFabric Caching:Host | Общее число запусков вытеснения

Общее количество запусков вытеснения с момента запуска службы кэширования AppFabric.

AppFabric Caching:Host | Общий объем данных в байтах

Общий объем кэшированных данных в байтах.

AppFabric Caching:Host | Общее число вытесненных объектов

Общее количество объектов, вытесненных с момента запуска службы кэширования AppFabric.

AppFabric Caching:Host | Общий объем вытесненной памяти

Количество памяти в байтах, вытесненное с момента запуска службы кэширования AppFabric.

Так как счетчики вытеснения являются накопительными с момента запуска службы кэширования, то изменения этого значения отражаются со временем.

Кроме того, существует два события, связанных с прогонами вытеснения. Эти события отражаются в журнале Operational для AppFabric.

Код события Описание

118

Низкий уровень доступной памяти.

115

Служба в состоянии регулирования.

Событие 118 указывает на достижение предельного уровня памяти в службе кэширования. Это вызывает выполнение вытеснения, что позволяет повысить доступный объем памяти. Событие 115 указывает на нехватку памяти сервера и состояние регулирования. Это вызывает вытеснение, что позволяет устранить состояние регулирования. Дополнительные сведения о регулировании см. в документе Устранение неполадок регулирования (кэширование Windows Server AppFabric).

Примечание

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

Устранение ошибок вытеснения

Если вытеснение выполняется из-за нехватки памяти сервера, то сервер также находится в состоянии регулирования. Дополнительные сведения об устранении регулирования см. в разделе Устранение неполадок регулирования (кэширование Windows Server AppFabric).

Если вытеснение выполняется в нерегулированном состоянии сервера, то следует просмотреть параметры конфигурации узла кэша с помощью команды Windows PowerShell Get-CacheHostConfig. Например, рассмотрим следующие параметры узла кэша.

Get-CacheHostConfig -HostName CacheServer1 -CachePort 22233

HostName        : CacheServer1
ClusterPort     : 22234
CachePort       : 22233
ArbitrationPort : 22235
ReplicationPort : 22236
Size            : 100 MB
ServiceName     : AppFabricCachingService
HighWatermark   : 90%
LowWatermark    : 80%
IsLeadHost      : False

В этом примере объем памяти, зарезервированной для службы кэширования в CacheServer1 равен всего 100 МБ. Предельное значение равно 90%. Таким образом, если этот узел кэша будет использовать более 90% от доступных 100 МБ памяти, то служба кэширования будет испытывать нехватку, и будет запущено вытеснение. Проблема в этом случае заключается в необычно малом объеме памяти для службы кэширования. Решением является увеличение объема памяти кэширования на узле кэша CacheServer1. В следующем примере кластер кэша останавливается, а размер увеличивается до 1000 МБ.

Stop-CacheCluster
Set-CacheHostConfig -CacheSize 1000 -HostName CSD1516217 -CachePort 22233

Предупреждение

Не следует повышать объем доступной памяти службы кэширования, если отсутствует соответствующий объем физической памяти.

Примечание

Параметр CacheSize совмещается с параметром HighWatermark для определения момента запуска вытеснения. Это не гарантирует удержания памяти кэша на данном уровне или ниже данного уровня. Пример приведен в следующем разделе при обсуждении кэшей без вытеснения.

Рекомендации по кэшу без вытеснения

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

  • Если нагрузка на память вызвана кэшем без вытеснения, то прогон вытеснения не устранит проблему. В этом случае вытеснение будет осуществляться повторно.

  • Если нагрузка на память вызвана кэшем без вытеснения, то при вытеснении будут удалены элементы из других кэшей, в которых вытеснение разрешено.

Чтобы определить, в каком из кэшей включено вытеснение, используйте команду Windows PowerShell Get-CacheConfig. Для отображения кэша, его параметров вытеснения и размера можно использовать простой скрипт.

$cache = Get-Cache
foreach($cache in $caches) { Write-Host $cache.CacheName (Get-CacheConfig $cache.CacheName).EvictionType (Get-CacheStatistics $cache.CacheName).Size }

Ниже приведен пример результатов выполнения этого скрипта.

Cache1 None 20481960
Cache2 LRU 20706360
default LRU 4099920

В указанном примере видно, что в кэше Cache1 вытеснение отключено (None вместо LRU), а текущий размер равен 20481960 байт.

См. также

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

Устранение неполадок сервера (кэширование Windows Server AppFabric)

  2011-12-05