Uso de memória do Windows 2012 Core Extreme no serviço SVCHOST / Estação de Trabalho

9

Temos aproximadamente 200 servidores, Hyper V, File Cluster e IIS, que estão enfrentando o mesmo problema; um evento ocorre no servidor através do uso normal que atinge o máximo ou o máximo possível da RAM no servidor. Quando isso acontece, o serviço SVCHOST / Estação de Trabalho, especificamente (eliminado isolando o serviço Estação de Trabalho do próprio SVCHOST) para de liberar identificadores / threads e a memória usada por esse serviço nunca é liberada. Em alguns casos extremos, temos serviços de estação de trabalho que usam até 40 GB de RAM em um servidor de 255 GB. Também encontrando mais de 40 milhões de identificadores em alguns casos.

Na reinicialização, é claro que o problema desaparece e não aparece novamente até que toda a memória tenha sido usada, digamos, pelo processo W3 ou pelas VMs HyperV, depois disso, o serviço Estação de Trabalho começa a pegar toda a RAM. O processo é muito lento e pode levar semanas / meses, dependendo da quantidade de RAM em um servidor.

Tanto os servidores Hyper V como os servidores IIS acessam compartilhamentos para arquivos de trabalho; esses compartilhamentos estão no armazenamento SSD; portanto, eles têm um bom desempenho. Instalamos todos os patches atuais, mas não mudamos para o R2, pois temos muitas ferramentas implementadas que tornarão essa etapa significativa e não podemos encontrar nenhuma indicação clara de que isso seria corrigido no R2.

Executamos o ProcMon e outras ferramentas, mas nos servidores mais problemáticos essas ferramentas nem sequer são executadas. Por outro lado, os resultados fornecidos apenas mostram que parece haver realmente um vazamento de memória nesse processo.

Existe uma maneira de liberar a memória desse processo ou evitar o bug todos juntos? Não queremos ter que reiniciar e não podemos reiniciar o processo quando estiver em um estado de erro. O processo fica congelado.

Estamos tentando evitar reinicializações regulares para 'corrigir' esse problema, para que todas as respostas sejam apreciadas.

Craig
fonte
Qual a sua pergunta?
Andrew Schulman
De fato, nós fazemos, mas é ambíguo na melhor das hipóteses, apenas milhares / milhões de threads abrindo. Nos sistemas mais problemáticos, não podemos executar essas ferramentas, elas apenas travam o servidor.
Craig
Queremos descobrir uma boa solução para resolver o problema, além de reiniciar a caixa. Não podemos parar os serviços depois que esse problema é iniciado.
Craig
O KB 2811660 foi instalado? Esses sistemas estão executando o gerenciador de servidores? support.microsoft.com/kb/2793908
Sim, este KB foi instalado há algum tempo. Além disso, esse vazamento é específico para o serviço Estação de Trabalho, que o KB se aplica ao serviço WMI.
Craig

Respostas:

1

Eu tive um problema estranhamente semelhante em que o svchost estava destruindo o desempenho do servidor.

A solução: Acontece que eu tinha um log de eventos completo. Eu limpei e tudo estava de volta e funcionando como se nada tivesse acontecido.

(Eu também recomendo alterar o tamanho do log de eventos do padrão, veja abaixo)

Para definir o tamanho máximo do log usando a interface do Windows
- Inicie o Visualizador de Eventos.
- Na árvore do console, navegue e selecione o log de eventos que deseja gerenciar.
- No menu Ação, clique em Propriedades.
- Em Tamanho máximo do log (KB), use o controle giratório para definir o valor desejado e clique em OK.

Parece exatamente o que está acontecendo aqui, mas acabou sendo uma solução muito fácil. Uma reinicialização resolveria temporariamente o problema, mas assim que algo tentasse gravar no log, tudo ficaria fora de controle e continuaria consumindo recursos.

Espero que isto ajude!

Aelof
fonte
-1
>Is there a way we can free up the memory from this process ?

Não há como liberar (adequadamente) externamente (adequadamente) a memória alocada ou manipular recursos sem matar o aplicativo ofensivo.

>or avoid the bug all together? 

Você está tendo um vazamento de memória e recursos. A única maneira de resolver o problema é encontrar o vazamento e evitar seu gatilho (se possível) ou corrigi-lo no nível do código-fonte; No último caso, você precisa da ajuda da Microsoft para produzir o patch, mas parece que eles esperam que você diga "exatamente" onde está realmente o problema.

Você pode tentar encontrar o culpado, identificando o vazamento de memória / recurso usando, por exemplo, o MS Application Verifier

Pat
fonte
O gatilho são compartilhamentos de arquivos, que não podemos evitar.
Craig
se você não puder evitar o gatilho, localize o vazamento com "Application Verifier" e entre em contato com a MS com essas informações.
Pat
Os aplicativos, como existem vários, são todos da Microsoft. Já entramos em contato com eles, estamos procurando uma solução mais rápida, pois eles podem levar semanas / meses para resolver isso.
Craig
Considerando que o MS não se apressará em resolver esse tipo de coisa em um sistema operacional não atual, acho que você não encontrará uma solução mais rápida. Uma coisa diferente é se você lhes disser onde o vazamento está localizado.
Pat
Temos um caso aberto e trabalhamos com eles há um mês. O vazamento está literalmente no serviço Estação de Trabalho.
Craig
-1

Criar RAM é fácil, mas não há solução.

Sugiro Sysinternals RAMMAP ou VMMAP para uma investigação mais aprofundada. Com essas ferramentas, você pode ver melhor o que acontece. muitas vezes é um problema de metarquivo.

Desde o Server 2008, temos esse problema com todos os servidores de terminal que ficam sem memória com um consumo inacreditável de memória ao longo do tempo ao iniciar aplicativos a partir do compartilhamento.

Nossa solução alternativa é hospedar esses aplicativos em um Terminal Server separado e limpar frequentemente o consumo de memória.

Fazemos isso com um aplicativo de linha de comando c ++ auto-projetado usando
SetProcessWorkingSetSize () com SeDebugPrivilege em todos os processos

É altamente recomendável não fazer algo assim;)

Magnus
fonte
Por que voto negativo? É exatamente o que foi solicitado! Não é um prazer tentar ajudar aqui ...
Magnus