Limitação
Quando há pouca memória física em um host de cache do Microsoft AppFabric 1.1 para Windows Server, o host pode entrar em um estado chamado limitação. O cluster de cache não gravará dados em nenhum cache que resida em um host de cache limitado até a memória física disponível aumentar para resolver o estado limitado.
Diagnosticando limitação
O sintoma mais óbvio de limitação será proveniente dos aplicativos. As tentativas de gravar no cache gerarão erros DataCacheException. Para obter mais informações sobre a exceção, consulte RetryLater (Throttled). Para confirmar se a limitação se tornou um problema no cluster de cache, você pode usar um ou mais dos testes a seguir.
Use o comando
Get-CacheClusterHealth
do Windows PowerShell. Veja se algum dos hosts de cache têm caches com porcentagens na categoriaThrottled
.Habilite o log Operacional no Visualizador de Eventos em cada host de cache e procure o Evento 116 que informa "Serviço em estado limitado".
Use o Monitor de Desempenho para acompanhar Memória | MBytes Disponíveis em cada host e cache. Quando o valor está abaixo de 15% da memória física total, o host de cache entra no estado limitado. A limitação também ocorre quando a memória do host de cache entra nos 4% da configuração de
CacheSize
.
Observe que um servidor no estado limitado também mostrará aumento nas execuções de remoção. Para obter mais informações sobre problemas de remoção, consulte Remoção.
Dica
Para obter mais informações sobre as ferramentas descritas acima, consulte Ferramentas de Monitoramento da Integridade (Cache do AppFabric 1.1).
Resolvendo limitação
Antes de decidir sobre uma resolução para a limitação, é importante compreender melhor porque ela ocorreu. A tabela a seguir fornece uma causa possível e a solução recomendada.
Causa da limitação | Descrição e resolução |
---|---|
Outros processos que usam muitas memória. |
É possível que outros processos no host de cache estejam usando grandes quantidades de memória. Isso poderá resultar em condições de pouca memória, dependendo da quantidade de memória reservada para o Serviço de Cache. Você pode detectar isso usando o contador Processo | Bytes Particulares no Monitor de Desempenho para exibir a memória usada para cada processo. Se o Serviço de Cache, DistributedCacheService.exe, não for o consumidor de memória primária, procure outros processos que estejam consumindo uma porcentagem alta de memória. Uma solução é mover os processos com problema para outros servidores que não sejam hosts de cache. Você também pode adicionar mais memória física ao computador. Dica Embora você possa usar |
Serviço de Cache que usa muitas memória. |
Isso pode ser identificado usando o Gerenciador de Tarefas ou o Monitor de Desempenho para exibir a memória usada pelo Serviço de Cache, DistributedCacheService.exe. É possível que a expiração e/ou remoção tenham sido desabilitadas por um ou mais caches. Isso pode contribuir para a condição de pouca memória. Você encontrará os caches no cluster usando o comando |
Memória não coletada do .NET. |
Embora a coleta de lixo do .NET ocorra automaticamente, pode haver momentos entre as coletas em que a memória não coletada esteja contribuindo para as condições de pouca memória do host de cache. Neste cenário, use o comando |
Regiões personalizadas. |
O aplicativo pode criar regiões personalizadas com o método CreateRegion. Essas regiões sempre existem como uma unidade em um host de cache específico. Se o aplicativo colocar uma grande quantidade de dados em uma única região, será possível que um host de cache se torne limitado mesmo que haja memória disponível em outros hosts de cache. Uma solução é adicionar mais memória a cada host de cache no cluster, pois você não poderá ter certeza do host de cache que será escolhido para a região personalizada. A outra solução é projetar novamente o aplicativo para armazenar menos dados na região ou criar e usar várias regiões. |
Marcar tabelas de hash |
Vários métodos de armazenamento em Cache do AppFabric permitem armazenar itens no marcas associadas. O uso de marcas cria tabelas de hash internas que não são removidas posteriormente, mesmo depois que os itens associados são removidos. Isso não se refere à perda de memória, mas contribui para o uso geral de memória pelo Serviço de Cache do AppFabric. Se um aplicativo usar marcas que são alteradas com o tempo, isso poderá contribuir para a pressão de memória. |
Consulte também
Conceitos
Solucionando problemas do servidor
2012-03-05