Porque o Exchange 2007, 2010 e 2013 consome tanta memoria RAM?
O motivo do consumo de memória é o mesmo do SQL, ele loca a maior quantidade de memória RAM possível para ter um melhor desempenho mas nem sempre é necessário usar o padrão, já que ele calcula o uso pela quantidade de memória que o servidor tem e não pela carga.
Em muitos ambientes com sistema de e-mail Exchange sempre observo um problema clássico: O consumo excessivo de memória RAM pelo Servidor Microsoft Exchange da versão 2007 até a atual 2013. Questionado, decidi compartilhar com vocês uma solução que sempre adotamos em nossos clientes.
Temos inúmeros cenários mas vou citar 2 mais comuns:
1 – Servidor dedicado para Exchange( seja ele com todas as roles ou somente com o store)
2- Um único servidor na empresa com todos os serviços de T.I.
No cenário 1, o problema é menos critico do que no 2, porque? Pois neste ultimo todas as outras aplicações acabam comprometidas,
A solução é a mesma para todas as situações de consumo alto de memoria no Exchange com pequenas variantes:
Os parâmetros que precisamos modificar no Active Directory são:
msExchESEParamCacheSizeMin
msExchESEParamCacheSizeMax
Pra Limitar o tamanho do cache, abra o ADSI e navegue até Configuration > Services > Microsoft Exchange > Your_Exchange_Organization > Administrative Groups > Your_Exchange_Administrative_Group > Servers > Your_Mailbox_Server.
Clique no botão direito do moute em Information Store, selecione Properties(propiedades) e localize o msExchESEParamCacheSizeMax
Este parâmetros controla o “ESE buffer size”. O valor que precisamos colocar é chamado de contagem de paginas ou ” Page Count” e precisa estar em múltiplos de 8192 para ser mais eficiente. Se este valor não for calculado corretamente com certeza você terá problemas de memoria.
Como calcular o page count para meu Exchange?
Se você possuí um Servidor somente com a função de MAILBOX com 16Gb de memória, o tamanho do cache máximo utilizado deverá ser de 10,4GB. Mas se você precisa diminuir o consumo de memória porque esta ultrapassando o limite ou precisa para outras aplicações e quer prevenir travamentos inesperados, você pode alterar o limite para 8GB. Para fazer a conversão é simples, 8GB para KB= 8388608 e dividimos por 32KB=262144.
No caso de um servidor com 16GB com todas as funções, restariam 8gb para o S.O e o HuB Transport. Caso tenha outras aplicações, bancos de dados e que estão lentas por causa do consumo de memoria do Exchange podemos diminuir e limitar para 4GB o valor neste caso ficaria no msExchESEparamCacheSizeMax:
131072 (4 GB = 4.194.304 KB / 32 KB)
Para esta limitação funcionar precisamos colocar um valor também no msExchESEparamCacheSizeMin:
65536 (2GB = 2097125 KB / 32KB)
Se for ambiente 32bits como o exchange 2007 a divisão é por 8.
Com esta base você pode calcular qualquer outro cenário.
Seguem referências para melhor entendimento do assunto em ordem de importância:
Understanding the Mailbox Database Cache
Exchange 2010 Mailbox Server Role Design Example
ESE Database Cache Size in Exchange 2007
Limit Exchange 2010 mailbox database cache size
Ficou alguma dúvida? Comente!