IISのWebAPIソリューションで応答時間に問題があります。 開発マシンで実行されている簡単なJMeterテストプランを使用して負荷を生成します。私のテストプランは、15個のスレッドを使って15個のスタティックコールを繰り返します。負荷は7分間におよそ90,000回の要求です。スループットは約203 requests per second
です。IIS 7.5 WebAPIパフォーマンススケーリングの問題
JMeterが負荷を増加させているスレッドランプアップの間、応答時間にはスパイクが含まれ、テスト全体を通して継続します。マシンとアプリケーションは本当に汗をかくようには見えません.CPUの負荷は約30-40%
なので、それほど飽和しません。アプリケーションは、テスト全体で単一のエラーを返さなかった。アプリケーションおよびマシンに関する
詳細:
- アプリケーションは、.NET 4.6 WebAPIの溶液です。キャッシュはマシン自体のメモリにあります。 1つのワーカープロセス
- を用い
4CPU /4GB RAM
機械 - 統合パイプラインアプリケーションプール(.NET 4)上のIIS 7.5にホストされている
- 、プロセスモデルは
machine.config
ファイルに自動設定に設定されています。私はこの問題を解決するために、これまで試したどのよう
:
- 異なるマシンや場所でテストを実行することによって、ネットワークなどのインフラからの影響を排除します。呼び出しにローカルホストを持つマシン自体でさえ。
- 完全
- ロギングの有効化と動的コンテンツ圧縮 を無効IISを無効4
- にワーカー・プロセスの数を増やす100(最大)
- 25から「ASPスレッドプロセッサごとの制限を」増大しました
うまくいけば、誰かが私を正しい方向に向けることができればと思います。ありがとう!
私は、IISスケーリング、yay tunnel visionに焦点を当てました!私はJMeterのテストがコマンドラインから実行されていることに言及していませんでした。そのためにメモリ不足の問題やその他の悲しみはありませんでした。 dotTraceでプロファイリングした後、Ninject DIコンテナは要求によってはパフォーマンス上のペナルティを与えているようですが、これらの早期発見を検証するためにはもう少し多くのことが必要になります。あなたのご意見ありがとうございます! – Oskar