Solução de problemas de remoção (Cache do Windows Server AppFabric)
Um cluster de cache do Windows Server AppFabric usa remoção para controlar a quantidade de memória que o Serviço de Cache usa em um host de cache. A remoção ocorre durante dois cenários:
A memória física disponível no servidor é criticamente baixa.
O uso de memória do Serviço de Cache excede a marca d' água alta do host de cache.
A remoção não é necessariamente um problema. Se você tiver um volume surpreendentemente alto de atividade no cluster de cache, a remoção poderá eliminar os itens menos usados recentemente e impedir que problemas de memória causem limitação. Para obter mais informações sobre limitação, consulte Solução de problemas de limitação (Cache do Windows Server AppFabric). No entanto, execuções regulares de remoção poderão indicar falta de memória ou um problema de configuração com o host de cache ou com um ou mais caches.
Para obter mais informações sobre remoção, consulte Expiração e remoção.
Diagnosticando problemas de remoção
De uma perspectiva de aplicativo, a remoção faz com que os aplicativos não encontrem itens no cache que deveria estar lá. Isso significa que os aplicativos devem preencher novamente esses itens, o que poderá afetar negativamente o desempenho do aplicativo.
Para avaliar a frequência das execuções de remoção, você pode usar o Monitor de Desempenho para registrar dois contatores, quatro contadores.
Contador | Descrição |
---|---|
Host de Cache do AppFabric | Total de Execuções de Remoção |
O número total de execuções de remoção desde o início do Serviço de Cache do AppFabric. |
Host de Cache do AppFabric | Total de Bytes do Tamanho dos Dados |
O tamanho total em bytes dos dados armazenados em cache. |
Host de Cache do AppFabric | Total de Objetos Removidos |
O número de objetos removidos desde o início do Serviço de Cache do AppFabric. |
Host de Cache do AppFabric | Total de Memória Removida |
A quantidade de memória em bytes removida desde o início do Serviço de Cache do AppFabric. |
Como os contadores de remoção são acumulativos desde o início do Serviço de Cache, você deve observar alterações nesse valor com o tempo.
Também há dois eventos relacionados às execuções de remoção. Esses eventos ocorrem no log Operacional do AppFabric.
ID do Evento | Descrição |
---|---|
118 |
Pouca memória de serviço disponível. |
115 |
O serviço entrou em estado limitado. |
O evento 118 indica que o Serviço de Cache atingiu o nível alto de memória de marca d'água. Uma execução de remoção é disparada para tentar retornar os níveis de memória ao nível baixo de memória de marca d'água. O evento 115 indica que o servidor está com pouca memória e entrou no estado limitado. Uma execução de remoção é disparada para tentar resolver o estado limitado. Para obter mais informações sobre limitação, consulte Solução de problemas de limitação (Cache do Windows Server AppFabric).
Dica
Para obter mais informações sobre as ferramentas descritas aqui, consulte Ferramentas de Monitoramento de Integridade (Cache do Windows Server AppFabric).
Resolvendo problemas de remoção
Se ocorrerem execuções de remoção porque o servidor está com pouca memória, provavelmente o servidor também estará em um estado limitado. Para obter mais informações sobre como resolver a limitação, consulte Solução de problemas de limitação (Cache do Windows Server AppFabric).
Se as execuções de remoção ocorrerem quando o servidor não estiver limitado, verifique as definições de configuração de host do cache com o Comando Get-CacheHostConfig
do Windows PowerShell. Por exemplo, considere as seguintes configurações de host de cache.
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
No exemplo anterior, o tamanho de memória reservada para o Serviço de Cache em CacheServer1
é apenas 100 MB. O nível alto de marca d'água é 90%
. Isso significa que quando a memória usada nesse host de cache atingir 90% de 100 megabytes, o Serviço de Cache estará com pouca memória e uma remoção será disparada. Nesse exemplo, o problema é que a memória para o Serviço de Cache foi definida supreendemente baixa. A solução é aumentar a quantidade de memória cache no host de cache CacheServer1
. O exemplo a seguir interrompe o cluster de cache e altera o tamanho para 1.000 MB.
Stop-CacheCluster
Set-CacheHostConfig -CacheSize 1000 -HostName CSD1516217 -CachePort 22233
Aviso
Você não deve aumentar a quantidade de memória disponível para o Serviço de Cache, a menos que também tenha a memória física disponível para oferecer suporte ao aumento.
Dica
O CacheSize
combina com o HighWatermark
para determinar quando disparar execuções de remoção. Ele não garante que a memória cache permanecerá nesse nível ou abaixo dele. Para obter um exemplo, consulte a discussão de caches que não sejam de remoção na próxima seção.
Considerações sobre cache que não seja de remoção
Por padrão, novos caches permitem remoção; no entanto, você pode criar um cache que não permita remoção. Se a remoção não estiver habilitada para um cache, suas execuções não removerão nenhum item desse cache. Isso tem várias implicações:
Se a pressão de memória for causada por um cache que não seja de remoção, as execuções de remoção não resolverão o problema. Nesse caso, as execuções de remoção ocorrerão várias vezes.
Se a pressão de memória for causada por um cache que não seja de remoção, as execuções de remoção removerão itens de outros caches que permitem remoção.
Para determinar os caches que permitem remoção, você pode usar o comando Get-CacheConfig
do Windows PowerShell. É possível usar um script simples para exibir cada cache, sua configuração de remoção e seu tamanho.
$cache = Get-Cache
foreach($cache in $caches) { Write-Host $cache.CacheName (Get-CacheConfig $cache.CacheName).EvictionType (Get-CacheStatistics $cache.CacheName).Size }
O seguinte exemplo mostra a saída de exemplo desse script.
Cache1 None 20481960
Cache2 LRU 20706360
default LRU 4099920
No exemplo de saída anterior, você pode ver se Cache1
tem a remoção desabilitada (None
, em vez de LRU
) e se tem atualmente um tamanho de 20481960
bytes.
Consulte também
Conceitos
Solucionando problemas do servidor (Cache do Windows Server AppFabric)
2011-12-05