Comment empêcher L'utilisation de CPU 100% en raison du processus de travail dans iis
mon utilisation CPU est 100% la plupart du temps dans Windows Server 2008-R2 avec mes propres vps, vmware, Quad core, et 4 Go de Ram. Quand j'ouvre le Gestionnaire de tâches windows et que je vais au moniteur de ressources, je vois que 100% d'utilisation est à cause de workerprocess.exe
. J'ai 3 sites Web dans mon IIS.
- Comment puis-je comprendre quel site web est à l'origine de cet usage
- Comment puis-je limiter à 80% l'utilisation du CPU?
- pourrait-il s'agir d'une attaque DDOS?
- Est-il possible de prévenir DDOS?
j'ai installé eset-nod32 sur mon vps, mais il ne montre aucune attaque dans les logs. J'ai essayé de chercher à propos de IIS et d'empêcher les DDOS, et je viens de trouver une extension pour interdire les adresses IP, mais comment puis-je trouver 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 causent l'utilisation de cpu?
Aussi, un de mes sites web doit accéder au bureau de l'administrateur et lire et écrire certains fichiers. Donc, à cause de cela, j'ai changé son pool d'applications -> identité (modèle de processus) en système local, et je ne sais pas si c'est lié à l'utilisation du CPU ou non.
6 réponses
eh Bien, cela peut prendre beaucoup de temps à comprendre. Quelques points pour le réduire:
- identifier ce qui tue le CPU. Je recommande l'Explorateur de Processus http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
- Identifier ce pool d'applications est à l'origine de ce
- Correction de votre code
Diagnostic
en termes de diagnostic de ce que le Pool D'applications cause des problèmes, vous pouvez:
- Sélectionnez le serveur
- Aller dans IIS > Processus de travail
ceci devrait faire apparaître un menu comme celui-ci pour que vous puissiez déterminer quelle appli Pool est en train de tourner.
A partir de là, vous pouvez simplement redémarrer l'Application pool et 9 fois sur 10 qui va corriger toute les problèmes que vous rencontrez.
Traitement
à moins que vous dirigiez une affaire controversée, ce n'est probablement pas une attaque DDOS. Il est probable qu'une partie du code est juste suspendu parce qu'il ne pouvait pas passer à un autre serveur ou s'est coincé dans une boucle ou des ressources mal allouées ou votre bassin d'applications n'a tout simplement pas été recyclé depuis un certain temps.
vous pouvez traiter ce problème de manière programmatique sans avoir à identifier manuellement, à vous connecter et à recycler le pool d'applications. Juste configurer le propriété CPU sur votre bassin D'applications. Vous pouvez le faire tuer (et redémarrer automatiquement) votre processus à chaque fois que vous atteignez un seuil CPU pendant un certain temps.
dans votre cas, si vous voulez qu'il redémarre à 80%, vous pouvez cliquer avec le bouton droit de la souris sur l'Application pool et aller dans Paramètres avancés et appliquer les configurations suivantes:
NOTE:kraken101 a souligné, différents IIS GUIs ont traité cela différemment au fil du temps. Alors que la valeur de configuration est toujours en 1/1000 d'un %, parfois L'interface graphique prend le pourcentage entier.
Vous pouvez ajouter ceci à votre config comme ceci:
<applicationPools>
<add name="DefaultAppPool">
<cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
</add>
</applicationPools>
alternativement, vous pouvez le script avec Powershell's Module WebAdministration comme ceci:
(*assurez-vous que web-script-outils 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 à corriger certaines choses une fois qu'elles sont cassées, mais ne résoudront pas vraiment les problèmes sous-jacents que vous avez.
Voici quelques ressources sur la surveillance des performances:
utilisez PerfMon pour recueillir des données et DebugDiag pour analyser.
J'ai trouvé ce lien En cherchant un lien similaire.
je faisais face aux mêmes problèmes récemment et j'ai trouvé une solution qui a fonctionné pour moi et a réduit le niveau de consommation de mémoire jusqu'à une grande mesure.
Solution:
tout d'abord trouver l'application qui provoque l'utilisation de la mémoire lourde.
vous pouvez trouver ceci dans la section Détails du Gestionnaire des tâches.
Suivant.
- Ouvrir gestionnaire des services IIS.
- Cliquez sur Application Piscines. Vous trouverez de nombreux pools d'applications de votre système.
- maintenant du Gestionnaire des tâches vous avez trouvé quelle application est à l'origine de la consommation de mémoire lourde. Il y aurait plusieurs options pour cela et vous devez vous sélectionnez celui qui a '1' dans sa colonne Application de votre application web.
- lorsque vous cliquez sur l'application pool sur le côté droit, vous verrez une option Paramètres avancés sous Edit Les pools d'applications. Passez à Paramètres avancés. 5.Maintenant, dans la catégorie générale, définissez le activer les Applications 32 bits True
- redémarrez le serveur IIS ou vous pouvez voir la consommation diminue dans la section performance de votre gestionnaire de tâches.
Si cette solution fonctionne pour vous s'il vous plaît ajouter un commentaire afin que je puisse le savoir.
j'ai récemment eu ce problème moi-même, et une fois que J'ai déterminé qui AppPool était à l'origine du problème, la seule façon de résoudre le problème a été de supprimer complètement ce pool d'applications et de créer un nouveau pour le site à utiliser.