私の環境: Windows Server 2008、IIE 7.0、ASP.NET
Silverlight クライアントを開発しました。このクライアントは、WCF Web サービスを介して ASP.NET ホストから更新を取得します。
ユーザー数が非常に少ない場合 (~50)、CPU 使用率が 100% になり、接続が切断されます。サーバーは明らかにそれ以上のことを処理できるはずです。
DEV サーバーでいくつかのテストを実行したところ、実際に 100 リクエスト/秒で CPU が最大になりました。奇妙なことに、サービスがハードコードされたデータを送り返すダミーに置き換えられたとしても、サービスは依然として CPU を使い果たします。スレッド数が約 20 と非常に少なく見えたので、どこかで競合が発生していると思いました。
processModel
見つかったすべての構成オプションを変更して、ワーカー スレッド ( 、httpRuntime
およびMaxRequestsPerCPU
レジストリ エントリ)を増やしました。何も変わっていません。
次に、IIS サーバーを停止し、Web サービスをコンソールとして実行しました (すべての ASP 認証参照を削除しました)。このサービスは、CPU も使い果たしました。
次に魔法の部分です。コンソール アプリを強制終了し、IIS を再起動したところ、サービスは 5 ~ 60% の CPU で 100 リクエスト/秒を実行し、50 以上のワーカー スレッドを確認できます。プリプロ マシンで同じことを行ったところ、同じ魔法の効果が得られました。マシンを再起動すると、良好な動作が維持されます。
私の質問は、私の IIS サーバーを修正するために何が起こったのですか? 何がそれを修正したのか本当に理解できません。
乾杯。