Como prevenir o uso de CPU 100% por causa do processo de trabalho em iis

a minha Utilização do CPU é 100% da maioria das vezes no Windows Server 2008-R2 com o meu próprio vps, vmware, quad core e Ram 4GB. Quando abro o Gestor de Tarefas do windows e vou ao monitor de recursos, vejo que 100% de utilização é por causa de workerprocess.exe. Tenho 3 websites no meu IIS.

  • Como É Que posso descobrir qual o site que causa essa utilização
  • Como posso limitá-lo a 80% de uso da CPU?
  • Pode ser um ataque DDOS? Há alguma maneira de prevenir DDOS?

instalei o eset-nod32 no meu vps, mas não mostra nenhum ataque nos registos. Eu tentei pesquisar sobre IIS e prevenir DDOS, e acabei de encontrar uma extensão para banir endereços IP, mas como posso encontrar que endereço IP estão gerando tráfego?

o site está escrito em ASP.NET e C#. Como posso determinar o que está acontecendo naquele site e quais linhas de códigos estão causando esse uso de cpu?

além disso, um dos meus sites deve aceder ao ambiente de trabalho do administrador e ler e escreve alguns ficheiros. Então por causa disso eu mudei seu pool de Aplicação -> identidade (modelo de processo) para o sistema local, e eu não sei se ele está relacionado com o uso da CPU ou não.

Author: KyleMit, 2013-02-21

6 answers

Isto pode demorar muito tempo a descobrir. Alguns pontos para reduzi-lo:
 12
Author: Tomas Voracek, 2018-04-05 13:23:18

Diagnosticar

Em termos de diagnosticar o que a App Pool está a causar problemas, você pode:

  1. Seleccione o servidor
  2. ir ao IIS > processos de trabalho

Server Settings

Isto deve trazer um menu como este para que possa determinar qual o conjunto de aplicações está a correr mal.

Worker Processes

A partir daí você pode simplesmente reiniciar o conjunto de aplicativos e 9 vezes em cada 10 que irá corrigir quaisquer problemas imediatos que você esteja tendo.

Tratamento

A menos que fujas. algum tipo de Negócio controverso, provavelmente não é um ataque DDOS. É provável que algum código está apenas pendurado porque ele não poderia chegar a outro servidor ou ficou preso em um loop ou recursos mal alocados ou sua piscina app apenas não foi reciclado por um tempo.

Você pode lidar com este problema programaticamente sem ter que identificar manualmente, entrar e reciclar o conjunto de aplicativos. Basta configurar a propriedade do CPU na sua lista de aplicações. Você pode tê-lo matar (e reinicie automaticamente) o seu processo sempre que você chegar a um limite de CPU por um determinado período de tempo.

No seu caso, se quiser que reinicie a 80%, pode carregar com o botão direito no conjunto de aplicações e ir para a configuração avançada e aplicar as seguintes configurações:

App Pool Advanced Settings

Nota : Comokraken101 apontou, diferentes GUIs têm tratado isto de forma diferente ao longo do tempo. Enquanto o valor de configuração está sempre em 1/1000 de um%, às vezes a interface leva o todo cento.

Pode adicionar isto a a sua secção de configuração Assim:

<applicationPools>
   <add name="DefaultAppPool">
     <cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
   </add>
</applicationPools>

Alternativamente, você poderia criar um script com o Powershell do WebAdministration Módulo como este:
(*certifique-se de web-scripting-ferramentas está habilitado)

Import-Module WebAdministration

$appPoolName = "DefaultAppPool"
$appPool = Get-Item "IIS:\AppPools\$appPoolName"
$appPool.cpu.limit = 80000
$appPool.cpu.action = "KillW3wp"
$appPool.cpu.resetInterval = "00:01:00"
$appPool | Set-Item

Prevenção

Os passos acima ajudarão a corrigir algumas coisas depois de quebradas, mas não resolverão quaisquer problemas subjacentes que tenham. Aqui estão alguns recursos para fazer o desempenho monitorização:
 77
Author: KyleMit, 2017-05-23 12:10:06

Utilize PerfMon para recolher dados e DebugDiag para analisar.

Encontrei esta ligação ao procurar por um problema semelhante.

Http://www.iis.net/learn/troubleshoot/performance-issues/troubleshooting-high-cpu-in-an-iis-7x-application-pool

 1
Author: azed, 2015-03-27 21:27:05

Utilize procmon para definir o seu problema.

 0
Author: Bart van Kleef, 2013-03-25 20:25:17
[[1]eu estava enfrentando os mesmos problemas recentemente e encontrei uma solução que funcionou para mim e reduziu o nível de consumo de memória em grande medida.

Solução:

Em primeiro lugar, Encontre a aplicação que está a causar o uso de memória pesada.

Pode encontrar isto na secção de detalhes do Gestor de Tarefas.

Próximo.
  1. abra odirector do IIS .
  2. clique em conjuntos de aplicações. Você vai encontrar muitas piscinas de aplicação que o teu sistema está a usar.
  3. Agora, do Gestor de Tarefas, descobriu qual a aplicação que está a causar o consumo de memória pesado. Haveria várias opções para isso e você precisa selecionar a que está tendo '1' na coluna de Aplicação da sua aplicação web.
  4. Quando carregar no conjunto de aplicações do lado direito, irá ver uma opção Configuração avançada sob editar piscinas de aplicações. Vá para a configuração avançada. 5.Agora na categoria geral definida o Activar aplicações de 32 bits para verdadeiro
  5. reinicie o servidor IIS ou poderá ver que o consumo diminui na secção de desempenho do seu gestor de Tarefas.

Se esta solução funcionar para si, por favor adicione um comentário para que eu possa saber.

 0
Author: Pramil Gawande, 2015-12-29 17:17:25

Recentemente tive este problema eu mesmo, e uma vez que eu determinei qual AppPool estava causando o problema, a única maneira de resolver o problema era remover aquele pool app completamente e criar um novo para o site a usar.

 -4
Author: embryo, 2014-03-25 19:37:04