Certa vez um servidor Exchange Server 2007 com a função de CAS (Client Access Server) estava apresentando um alto consumo de CPU. Ao verificar qual processo que estava consumindo este recurso, identificamos o “W3wp.exe” com 100% de consumo de CPU.
Após uma análise detalhada, percebemos que este consumo de CPU elevado poderia estar relacionado a sincronização de dispositivos móveis com o servidor CAS.
O servidor Exchange CAS roda extremamente lento e pode não responder às requisições do Microsoft Exchange ActiveSync. Quando isso ocorre o processo “W3wp.exe” que roda sob o MSExchangeSyncAppPool pode usar 100% do tempo da CPU.
A causa deste sintoma ocorre quando um dispositivo móvel tenta sincronizar um número elevado de contatos em uma única requisição.
Identificar se isto está ocorrendo em seu ambiente é possível através de uma query nos logs do IIS. Com esta query conseguimos identificar o usuário e o dispositivo do usuário que estão gerando alto consumo de CPU.
Baixe e instale o Log Parser Sutdio no servidor Exchange CAS;
http://blogs.technet.com/b/exchange/archive/2013/06/17/log-parser-studio-2-2-is-now-available.aspx
Abra o Log Parser Sutdio e crie uma nova IIS query e execute o seguinte comando:
/* Procurar dispositivo/Informação do usuário consumindo 100% do CPU enquanto sincroniza os contatos */ Select TOP 5000 TO_TIMESTAMP(TO_DATE(date), TO_TIME(time)) as [Time], cs-username as [User], cs(user-agent) as DeviceID, TO_INT(EXTRACT_PREFIX(EXTRACT_SUFFIX(cs-uri-query, 0, ‘_RpcC’), 0, ‘_’)) As RPCCount, sc-status as Status, sc-substatus as SubStatus, sc-bytes as [Bytes], DIV(sc-bytes, 1024) AS [KBytes], time-taken, DIV(time-taken, 1000) as Sec, cs-uri-query FROM ‘[LOGFILEPATH]’ WHERE RPCCount > 2000 /* <– Altere o RPC count se necessário */ AND cs-uri-query LIKE ‘%Cmd=Sync%’ AND cs-uri-query LIKE ‘%Ty:Co%’ ORDER BY [Bytes] DESC |
Nota: Normalmente os usuários “problemáticos” atingem um valor de RPC count em torno de 2000.
Caso seja identificado algum usuário com valor RPC count maior que 2000, você pode seguir os seguintes passos a fim de validar o diagnóstico:
a) Desabilite temporariamente a sincronização para este usuário;
b) Reinicie o serviço MSExchangeSyncAppPool;
c) Execute a query novamente.
Se após estes passos o consumo de CPU do Exchange baixar e o usuário não aparecer mas nos resultados da query o seu diagnóstico está confirmado.
Agora você deve analisar a pasta de contatos do usuário e reduzir o número de contatos.