私自身のvps、vmware、クアッドコア、および4GB Ramを搭載したWindows Server 2008-R2では、ほとんどの場合CPU使用率は100%です。 Windowsタスクマネージャーを開いてリソースモニターに移動すると、100%の使用はworkerprocess.exe
が原因であることがわかります。 IISに3つのWebサイトがあります。
Vsetにeset-nod32をインストールしましたが、ログに攻撃が表示されません。 IISについて検索してDDOSを防止しようとしましたが、IPアドレスを禁止する拡張機能を見つけましたが、どのIPアドレスがトラフィックを生成しているのかを見つけるにはどうすればよいですか?
WebサイトはASP.NET
およびC#
で記述されています。そのWebサイトで何が起こっているのか、どのコード行がCPUの使用を引き起こしているのかをどのように判断できますか?
また、私のWebサイトの1つは管理者のデスクトップにアクセスし、いくつかのファイルを読み書きする必要があります。そのため、アプリケーションプール-> ID(プロセスモデル)をローカルシステムに変更しましたが、それがCPU使用率に関連しているかどうかはわかりません。
さて、これを理解するには長い時間がかかる場合があります。絞り込むポイントはほとんどありません:
問題を引き起こしているアプリプールの診断に関しては、次のことができます。
これにより、このようなメニューが表示され、どのアプリケーションプールが正常に実行されているかを判断できます。
そこから、アプリプールを再起動するだけで、10回のうち9回は、当面の問題を修正します。
何らかの物議を醸すビジネスを実行しない限り、これはおそらくDDOS攻撃ではありません。別のサーバーにアクセスできなかったり、ループやリソースの割り当てが間違っていたり、アプリプールがしばらくリサイクルされていないために、一部のコードがハングしている可能性があります。
アプリプールを手動で識別、ログイン、リサイクルすることなく、プログラムでこの問題に対処できます。アプリプールで CPUプロパティ を構成するだけです。一定時間CPUしきい値に達すると、プロセスを強制終了(および自動的に再起動)できます。
あなたの場合、80%で再起動する場合は、アプリプールを右クリックして[詳細設定]に移動し、次の構成を適用できます。
NOTE: kraken101 指摘したように、異なるIIS GUIはこれを時間の経過とともに異なる方法で処理しました。構成値は常に%の1/1000ですが、GUIが全体の割合を占める場合があります。
これを your config セクションに次のように追加できます。
<applicationPools>
<add name="DefaultAppPool">
<cpu limit="80000" action="KillW3wp" resetInterval="00:01:00" />
</add>
</applicationPools>
あるいは、Powershellの WebAdministration Module でスクリプトを作成することもできます:
(* web-scripting-toolsが有効になっていることを確認してください )
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
上記の手順は、破損した問題を解決するのに役立ちますが、根本的な問題を実際に解決することはできません。
パフォーマンスモニタリングを行うためのリソースを次に示します。
PerfMonを使用してデータを収集し、DebugDiagを分析します。
同様の問題を検索中にこのリンクを見つけました。
私は最近同じ問題に直面していましたが、私にとっては有効で、メモリ消費レベルを大幅に削減する解決策を見つけました。
解決策:
まず、メモリ使用量が多いアプリケーションを見つけます。
これは、タスクマネージャーの[詳細]セクションにあります。
次。
この解決策がうまくいく場合は、コメントを追加してください。
W3wp.exeの高いCPU使用率を確認できる理由はたくさんあります。対象となる6つの一般的な原因を選択しました。
必要ない場合は、Webサイトの各アプリケーションプールから「32ビットアプリケーションを有効にする」をオフにします。
これは私のローカルマシンで私のために働いた