Uso da CPU "Peaky" em controladores de domínio

25

Temos dois controladores de domínio do Windows Server 2008 SP2 (infelizmente não o 2008 R2) em um pequeno domínio de 150 clientes que exibem um uso de CPU muito "de pico". Os controladores de domínio exibem o mesmo comportamento e são hospedados no vSphere 5.5.0, 1331820. A cada dois ou três segundos, o uso da CPU aumenta de 80 a 100% e depois diminui rapidamente, permanece baixo por um segundo ou dois e depois aumenta. novamente.

Desempenho do Gerenciador de tarefas DC3


A análise dos dados históricos de desempenho da máquina virtual indica que essa condição está ocorrendo há pelo menos um ano, mas a frequência aumentou desde março.

Desempenho da máquina virtual DC3



O processo incorreto é SVChost.exe, que está agrupando os serviços de Cliente DHCP (dhcpcsvc.dll), EventLog (wevtsvc.dll) e LMHOSTS (lmhsvc.dll). Certamente não sou especialista em assuntos internos do Windows, mas não consegui encontrar nada de especialmente errado ao exibir o processo com o Process Explorer, a não ser que o EventLog esteja acionando uma tonelada de chamadas RpcBindingUnbind .

DC3 Process Explorer para SVCHost.exe



Neste ponto, estou sem café e idéias. Como devo continuar a solucionar esse problema?


fonte
Apenas cuspir aqui: 1. Você tem um sistema de monitoramento que consulta os logs de eventos nos controladores de domínio? 2. Você tem algum tipo de auditoria ativada que pode estar levando a uma atividade pesada do Log de Eventos nos CDs?
precisa saber é o seguinte
1
Queria entrar em cena, pois esse tópico apareceu em uma pesquisa no Google por Registro de eventos de alta CPU. Esse problema ainda está presente no Server 2012. Resolvi exatamente o mesmo problema em um DC do Server 2012. Verifique os tamanhos do arquivo de log. O caminho do log padrão é a opção de rádio% SystemRoot% \ System32 \ Winevt \ Logs \ Overwrite que apresenta problemas ao lidar com tamanhos de arquivo de log maiores. Defino o meu como Arquivar o log quando estiver cheio e sobreposto.
KraigM
Para quem vem do Google, esse problema do serviço Log de Eventos também se aplica a máquinas Windows Server sem controladores. No meu caso, ter usuários suficientes com mmc.exe(provavelmente a janela "Gerenciador de servidores" padrão?) Aberta também atingiu picos regulares.
Nickolay

Respostas:

25

TL; DR: o arquivo EventLog estava cheio. A substituição de entradas é cara e / ou não foi implementada muito bem no Windows Server 2008.


No @pk. e @joeqwerty sugestão e, depois de perguntar, decidi que parecia mais provável que uma implementação de monitoramento esquecida estivesse raspando os logs de eventos.

Instalei o Monitor de rede da Microsoft em um dos controladores de domínio e comecei a filtrar o MSRPC usando o ProtocolName == MSRPCfiltro. Havia muito tráfego, mas era tudo entre o RODC do site remoto e, infelizmente, não usava a mesma porta de destino que o processo EventLog de escuta. Droga! Lá se vai essa teoria.

Para simplificar as coisas e facilitar a execução do software de monitoramento, decidi desembrulhar o serviço EventLog do SVCHost. O comando a seguir e uma reinicialização do controlador de domínio dedicam um processo SVCHost ao serviço EventLog. Isso facilita um pouco a investigação, pois você não possui vários serviços conectados a esse PID.

SC config EventLog Type= own

Em seguida, recorri ao ProcMon e configurei um filtro para excluir tudo o que não usava esse PID. Não vi muitas tentativas falhas do EventLog para abrir chaves de registro ausentes, como indicado como uma causa possível aqui (aplicativos aparentemente ruins podem se registrar como fontes de eventos de maneiras extremamente ruins). Previsivelmente, vi muitas entradas ReadFile bem-sucedidas do log de eventos de segurança (C: \ Windows \ System32 \ WinEvt \ Logs \ Security.evtx).

ReadFile Security.evtx

Aqui está uma olhada na pilha de um desses eventos: RpcBindingUnbind

Você notará primeiro o RPCBinding e depois o RPCBindingUnbind. Havia muitos deles. Como milhares por segundo. O Log de segurança está realmente ocupado ou algo não está funcionando corretamente com o Security.evtxlog.

No EventViewer, o Log de Segurança registrava apenas entre 50 a 100 eventos por minuto, o que parecia apropriado para um domínio desse tamanho. Droga! Segue a teoria número dois de que tínhamos alguma aplicação com auditoria de eventos muito detalhada ativada à esquerda em um canto esquecido, que ainda estava obedecendo. Ainda havia muitos eventos (~ 250.000) registrados, embora a taxa de eventos registrados fosse baixa. Tamanho do log, talvez?

Logs de segurança - (Clique com o botão direito do mouse) - Propriedades ... e o tamanho máximo do log foi definido para 131.072 KB e o tamanho do log atualmente é de 131.072 KB. O botão de opção 'Substituir eventos conforme necessário' foi verificado. Achei que excluir e gravar constantemente no arquivo de log provavelmente era um trabalho árduo, especialmente quando estava tão cheio, por isso optei por Limpar o log (salvei o log antigo para o caso de precisarmos auditar mais tarde) e deixei o serviço EventLog criar um novo arquivo vazio. O resultado: o uso da CPU retornou a um nível sensato em torno de 5%.

Comunidade
fonte
Bom trabalho. Além disso, mova o TL; DR para o topo da resposta?
Zlatko
Apenas para sua informação ... isso acabou com vários controladores de domínio, a maioria deles 2012/2012 R2. Portanto, parece ser igualmente mal implementado nas versões mais recentes do Windows Server.
HopelessN00b
Portanto, este é o meu problema, MAS eu configurei para arquivar quando estiver cheio e não sobrepor. O tamanho máximo do log é 1 GB e o tamanho atual é 639 MB. Perdeu o que fazer, além de talvez limpar o log como teste. Isso ocorre no 2008 R2 Std e está afetando o PDC e o controlador de domínio secundário. Ambos são VMs. Eu tive que alocar 2 soquetes / 1 núcleo para cada controlador de domínio ou eles atribuiriam alocações 1/1 e não responderiam mais. Adicionar mais RAM não fez nada. Está constantemente usando entre 60-100% da CPU neste momento.
Travis
Salva / limpa o log de segurança. Ainda executando 74% de uso da CPU.
Travis
5

Você pode perseguir isso criando um pequeno conjunto de coletores de dados.

  • Abra o Performance Monitor e crie um novo conjunto de coletores de dados definido pelo usuário.
  • Escolha Manual (sem modelo) e selecione Apenas dados de rastreamento de eventos .
  • Adicione o Serviço de Domínio Active Directory: dados principais e salve o conjunto.
  • Altere a condição de parada em Propriedades para 1 minuto.
  • Inicie o aparelho e aguarde.
  • Quando concluído, converta o arquivo .etl salvo em um .csv usandotracerpt –l “file.etl” –of CSV
  • Analise os dados summary.csv e dumpfile.csv no Excel. Convém fazer o download deste documento Import-DC-Info.xlsm para ajudá-lo com sua análise.

Se meu palpite estiver correto, você verá alguns dispositivos (IP: porta) martelando seu controlador de domínio.

pk.
fonte
1

Certamente difícil. Além de deixá-lo em paz (1 CPU / 50% de carga .. quem se importa?), Você pode tentar configurar um novo controlador de domínio e ver, depois de alguns dias, se este lhe dá o mesmo comportamento. Se isso acontecer, você pode tentar usar um rastreamento do Wireshark (obviamente, há algo da rede causando isso)

A próxima coisa que vem à mente é uma simples chamada para a microsoft

MichelZ
fonte
-2

Travis, "arquivo" não ajudou. De fato, mesmo limpar o log de eventos quando era 2 / 3rd crescido não ajudava. Mas o "arquivo" ajudou o KraigM.

kce: limpou um arquivo de "substituição" de 131MB e viu o desempenho cair de, digamos, 55% a 5%, mas PERGUNTA: talvez você eventualmente tenha visto alta utilização novamente, pois isso (a) só pode (a) ser acionado quando a condição de substituição for alcançada ou (b) pode ficar linearmente pior à medida que o arquivo limpo aumenta de 0 MB para 131 MB.

Alguns veem isso no security.evtx e outro no log operacional do Agendador de tarefas. Sugiro desinstalar completamente o seu AV (qual você está usando) e tentar. Os invasores precisam ocultar suas trilhas e elas são feitas em tarefas agendadas que eles configuram ou em logins que eles fazem. Portanto, eles ocultam suas faixas quebrando alças nesses logs de eventos e reescrevendo-as para pular suas faixas. Os AVs podem estar detectando isso de maneira incorreta, pois se fosse a Microsoft, mais dessa alta utilização teria sido relatada, mas estou vendo apenas algumas poucas publicações no Google. Também estou vendo isso no servidor 2008 R2 para o log security.evtx. Sem assinantes de log de eventos, sem monitores externos. Observei alguns serviços AV (McAfee) em execução e eles tiveram uma utilização total muito baixa de um servidor por tantos dias, por isso desconfio que ele tenha sido desinstalado e apenas parcialmente (provavelmente o desinstalador especial da McAfee) e me pergunto se há ganchos. o serviço da McAfee ou os drivers de filtro da McAfee em execução, que de alguma forma fazem uma gravação normal no log de eventos e decidem em sua filtragem que precisam transformar isso em uma leitura completa de todo o log de eventos. Confie em mim, drivers de filtro de terceiros de algumas empresas de antivírus são bugs e certamente 10000x mais bugs do que a implementação da Microsoft de log de eventos, o que provavelmente é perfeito. Em resumo, o problema de desinstalação 100% TODOS OS SEUS E VEJA SE resolve. Nesse caso, trabalhe com sua empresa de antivírus para corrigir o AV deles. Não é aconselhável criar exceções para arquivos.

Além disso, ao usar o procmon, preste atenção às chamadas WriteFile porque o Writefile é o que acionará o gerenciador de filtros para ler o arquivo inteiro. No meu caso, a leitura foi iniciada aproximadamente 30 segundos após a conclusão da gravação, que pode ser por design. Mas era consistente e, no meu caso, o arquivo tinha 4 GB e a leitura do arquivo envolvia arquivos de leitura de 64K cada um com 64 KB de comprimento e utilizava 35% da CPU para fazer isso. Muito triste.


Atualização 03/23/2016 Olhei para os drivers de filtro nesta máquina depois de concluir que isso tinha que ser causado por um deles (o mecanismo do log de eventos nunca poderia ser buggy por si só ou o número de relatórios desse tipo seria impressionante e não é). Eu vi alguns drivers de filtro de um antivírus e de uma empresa de terceiros bem conhecida que aumenta o desempenho do disco da máquina virtual com leituras antecipadas e perguntei ao arquiteto-chefe (que era muito gentil e gentil) se o produto dele poderia ser excessivamente agressivo durante toda a leitura. log de eventos de segurança (que estava acontecendo claramente por procmon). Isso seria útil para logs de segurança menores, mas não para os tamanhos relatados aqui. De jeito nenhum ele disse. Ele concordou que poderia ser o AV.

Como eu disse ao colega do Azure abaixo, não temos um acompanhamento do Pôster original se o problema ressurgir após a limpeza do log de eventos, porque essa é uma solução comum e equivocada, pois o desempenho diminui com o tempo novamente. Isso é chamado de "acompanhamento" e vejo em primeira mão que a solução do pôster original pode enganar aqueles que não o fazem acreditar que resolveram o problema. Eu quase fui enganado também. Limpei o log de eventos e o desempenho melhorou - mas usei procmon e vi que o problema aumentava lentamente ao longo do tempo até que se tornasse problemático. Por alguma razão, o colega do Azure me critica duramente quando o pôster original não é seguido (pode ter morrido, sido demitido, encerrado ou ocupado). O colega do Azure abaixo pensa que, se o pôster original não seguiu, deve ser um problema corrigido. Isso é irritante e intrigante, porque não consigo pensar em alguém que seja tão conceituado tecnicamente e que assuma essa posição. Peço desculpas se piquei um nervo. Talvez no meu ativismo em outro lugar na Internet, onde chamo as pessoas, tenha me irritado - aqui (falha no servidor), estou simplesmente sendo gentil e compartilhando profundo conhecimento técnico, e o resultado do Sr. Azure é intimidador sobre se minha contribuição técnica é uniforme. necessário ou é para algum blog meu (não tenho esse blog). Ainda não pretendo enviar esse link para cerca de meia dúzia de parceiros da Microsoft e perguntar a eles o que está acontecendo com esse tipo de bullying de um funcionário importante da MSFT, porque estou singularmente focado em ter o melhor interesse de todos. a comunidade em mente e as respostas abaixo do Sr. Azure são, em poucas palavras, inacreditáveis, vitriódicas, enervante e intimidador - o que tenho certeza de que algumas pessoas gostam de fazer com outras. Inicialmente fiquei ofendido, mas superei e sei que leitores passivos ou ativos apreciarão o que estou dizendo e apreciarão meus comentários - estou 100% por trás disso, sem levar em consideração as razões legalistas pelas quais é sutilmente inapropriado aqui ou não. M. Azure, por favor, pratique a gentileza e evite comentar meus comentários com pouca luz. Apenas supere isso e mostre contenção e não comente mais uma vez. por favor, pratique a bondade e evite comentar meus comentários com pouca luz. Apenas supere isso e mostre contenção e não comente mais uma vez. por favor, pratique a bondade e evite comentar meus comentários com pouca luz. Apenas supere isso e mostre contenção e não comente mais uma vez.

Harry

harry
fonte
Parece que você está abordando pessoas que comentaram, e não o OP e a pergunta original. E você está fazendo sugestões como remover o AV. O OP já resolveu o problema e o identificou como um problema no log de eventos. Não vejo isso como uma resposta válida.
precisa
Isso não foi resolvido se você ler atentamente os pôsteres e meu resumo. Você tem que sofrer com esse problema para analisar suas palavras com muito mais cuidado do que você e ver isso. Lamento que você não possa fazê-lo e me julgou com tanta severidade. Por exemplo, o OP disse que retornou a 5%, mas poderia facilmente ter retornado depois de limpar o log e ele não deu prosseguimento - na verdade, isso aconteceu com outro comentarista. Portanto, nada foi resolvido, pois ele não verificou os resultados em 5% permanentemente.
harry
Desculpe Harry - isso não é uma resposta; você está reivindicando um software de buggy e está dizendo ao OP para trabalhar com a empresa antivírus. Isso é ótimo para o seu blog pessoal ou um artigo, mas um editorial não é uma resposta para uma pergunta de dois anos com uma resposta aceita, com uma causa raiz não relacionada ao antivírus.
precisa
@ harry surpreendentemente, estou de volta aqui novamente tentando descobrir tudo de novo :) Não há antivírus no sistema. Fiz algumas atualizações do Windows e alterei o arquivo de log máximo para arquivar para 500 MB a partir de 1 GB. Mesmo com 1 GB, ele só rolou uma vez em 8 meses, enquanto meu outro CD rolou um pouco mais. Eu segui a sugestão "SC config EventLog Type = own" para quebrar o arquivo de log. Após a reinicialização, o processo evenlog caiu para menos de 1%. Os "dhcp e lmhosts" anexados ao processo também estão abaixo de 1% da CPU. Eu estava registrando apenas cerca de 15 eventos de segurança / segundo.
Travis
Suspeitei que um agente SSO que eu estava executando tivesse algo a ver com isso, pois havia muitos erros, mas desabilitar o serviço não resultou em uma queda no uso da CPU, mesmo após uma reinicialização. O agente SSO está de volta e a CPU ainda está baixa, então quem sabe.
Travis