4

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スレッドプロセッサごとの制限を」増大しました

うまくいけば、誰かが私を正しい方向に向けることができればと思います。ありがとう!

答えて

3

私は、次のステップのために行くお勧めします:

  1. ダブルチェックのJMeterマシン健康、JMeterのマシンは十分なリソースを持っていない場合は、実行が原因JVM上でガベージコレクションに一時停止またはOSレベルでスワッピングします。さらに、JMeterのデフォルト設定は、テストの開発とデバッグにのみ適しています。テストを実行する前に、少なくともいくつかのJVMパラメータを調整する必要があります。参考文献:

  2. dotTraceまたはANTSのようなツールをチェックアウトし、IIS側のプロファイラツールテレメトリの下でテストを再実行し、多分何かがアプリケーションコードに問題があります。
+0

私は、IISスケーリング、yay tunnel visionに焦点を当てました!私はJMeterのテストがコマンドラインから実行されていることに言及していませんでした。そのためにメモリ不足の問題やその他の悲しみはありませんでした。 dotTraceでプロファイリングした後、Ninject DIコンテナは要求によってはパフォーマンス上のペナルティを与えているようですが、これらの早期発見を検証するためにはもう少し多くのことが必要になります。あなたのご意見ありがとうございます! – Oskar