web-dev-qa-db-fra.com

Comment empêcher l'utilisation du processeur à 100% à cause du processus de travail dans iis

Mon utilisation du processeur est 100% la plupart du temps dans Windows Server 2008-R2 avec mes propres vps, vmware, quad core et 4 Go de RAM. Lorsque j'ouvre le Gestionnaire des tâches Windows et que j'accède au moniteur de ressources, je constate que l'utilisation à 100% est due à workerprocess.exe. J'ai 3 sites Web dans mon IIS.

  • Comment savoir quel site Web est à l'origine de cette utilisation
  • Comment puis-je limiter à 80% l'utilisation du processeur?
  • Serait-ce une attaque DDOS?
  • Est-il possible d'empêcher DDOS?

J'ai installé eset-nod32 sur mon vps, mais il ne montre aucune attaque dans les journaux. J'ai essayé de rechercher IIS et d'empêcher DDOS, et viens de trouver une extension pour interdire les adresses IP, mais comment puis-je savoir quelle adresse IP génère du trafic?

Le site Web est écrit en ASP.NET et C#. Comment puis-je déterminer ce qui se passe sur ce site Web et quelles lignes de codes sont à l'origine de l'utilisation de ce processeur?

En outre, l'un de mes sites Web doit accéder au bureau de l'administrateur et lire et écrire des fichiers. Donc, à cause de cela, j'ai changé son pool d'applications -> identity (Process Model) en système local, et je ne sais pas s'il est lié à l'utilisation du processeur ou non.

49
SilverLight

Eh bien, cela peut prendre du temps à comprendre. Quelques points pour le réduire:

13
Tomas Voracek

Diagnostiquer

Pour ce qui est de diagnostiquer quel pool d'applications pose problème, vous pouvez:

  1. Sélectionnez le serveur
  2. Aller à IIS> Processus de travail

Server Settings

Cela devrait faire apparaître un menu comme celui-ci afin que vous puissiez déterminer quelle application Pool est en cours d'exécution.

Worker Processes

À partir de là, vous pouvez simplement redémarrer le pool d'applications 9 fois sur 10, ce qui résoudra les problèmes immédiats que vous rencontrez.

Traiter

À moins que vous ne dirigiez une entreprise controversée, il ne s'agit probablement pas d'une attaque DDOS. Il est probable que du code reste en suspens, car il ne pouvait pas atteindre un autre serveur, il était bloqué dans une boucle ou des ressources mal allouées, ou votre pool d'applications n'avait tout simplement pas été recyclé.

Vous pouvez traiter ce problème par programme sans avoir à identifier, connecter et recycler manuellement le pool d'applications. Il suffit de configurer la propriété CPU sur votre pool d'applications. Vous pouvez le faire tuer (et redémarrer automatiquement) votre processus chaque fois que vous atteignez un seuil de la CPU pendant un certain temps.

Dans votre cas, si vous souhaitez qu'il redémarre à 80%, vous pouvez cliquer avec le bouton droit de la souris sur le pool d'applications, accéder à Paramètres avancés et appliquer les configurations suivantes:

App Pool Advanced Settings

[~ # ~] note [~ # ~] : Comme kraken101 souligné, différent IIS ont été traités différemment par les interfaces graphiques. Alors que la valeur de configuration est toujours égale à 1/1000%, l’interface prend parfois le pourcentage total.

Vous pouvez ajouter ceci à votre config section comme ceci:

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

Alternativement, vous pouvez l'écrire avec Module WebAdministration de Powershell comme ceci:
(* assurez-vous que web-scripting-tools est activé )

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

Prévenir

Les étapes ci-dessus vous aideront à résoudre certains problèmes une fois qu'ils sont en panne, mais ne résoudront pas réellement les problèmes sous-jacents que vous avez.

Voici quelques ressources sur la surveillance des performances:

86
KyleMit

Utilisez PerfMon pour collecter des données et DebugDiag pour analyser.

Trouvé ce lien en cherchant un problème similaire.

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

1
azed

Je faisais face aux mêmes problèmes récemment et j'ai trouvé une solution qui a fonctionné pour moi et qui a permis de réduire considérablement le niveau de consommation de mémoire.

Solution:

Tout d’abord, recherchez l’application qui entraîne une utilisation intensive de la mémoire.

Vous pouvez le trouver dans la section Détails du gestionnaire de tâches.

Prochain.

  1. Ouvrez le gestionnaire IIS.
  2. Cliquez sur Pools d'applications. Vous trouverez de nombreux pools d'applications utilisés par votre système.
  3. Maintenant, dans le gestionnaire de tâches, vous avez trouvé quelle application est à l'origine de la consommation de mémoire importante. Il y aurait plusieurs options pour cela et vous devez sélectionnez celle qui a '1' dans la colonne Application de votre application Web.
  4. Lorsque vous cliquez sur le pool d'applications sur le côté droit, une option Paramètres avancés apparaît sous Editer les pools d'applications. Aller aux paramètres avancés. 5.Maintenant dans la catégorie Général, définissez le Activer les applications 32 bits à True
  5. Redémarrez le serveur IIS ou vous pouvez voir la consommation baisser dans la section performances de votre gestionnaire de tâches.

Si cette solution vous convient, veuillez ajouter un commentaire afin que je puisse le savoir.

1
Pramil Gawande

Il existe de nombreuses raisons pour lesquelles vous pouvez constater une utilisation élevée du processeur dans w3wp.exe. J'ai sélectionné six causes communes à couvrir.

  1. Taux d'erreur élevé dans votre application Web ASP.NET
  2. Augmentation du trafic Web entraînant un processeur élevé
  3. Problèmes avec les dépendances de l'application
  4. Garbage collection
  5. Demandes bloquées ou bloquées quelque part dans le pipeline ASP.NET
  6. Un code .NET inefficace qui doit être optimisé
0
Ardavan Dejpanah

Si cela n'est pas nécessaire, désactivez l'option "Activer les applications 32 bits" de votre pool d'applications respectif de votre site Web.

Cela a fonctionné pour moi sur ma machine locale

0
Yoggesh Paatil