2012-01-20 1 views
1

IISでホストされている非常に単純な.NET Webサービスをテストしています。 Webサービスは単純な計算を実行して整数を返す単なる方法です。私は500スレッドを使用してこのメ​​ソッドをテストするために別のサーバーにJMeterを構成しました。各スレッドは500回ループします。したがってこのメソッドは250,000回呼び出され、スループットと応答時間をグラフで示します。同期ガーベジコレクションがパフォーマンス上の定期的なスパイクの原因になりますか?

したがって、グラフにはスループットと応答時間を示す250,000ポイントが含まれています。ただし、スループットと応答時間の両方のグラフでは、データセット内の非常に規則的な異常値が表示されます。非常に規則的な間隔では、スループットが非常に短く低下し、対応する応答時間が増加します。各チャートの250,000ポイントのうち、50〜75のアウトライアがあります。

これは非常に小さい割合であり、全体的なパフォーマンスへの影響は問題ではありませんが、私は異常値の原因を理解したいと思います。これまでの私の唯一の理論は、asp.netの同期ガベージコレクションはアプリケーションを一定の間隔で数秒間休止させることです。

ガベージコレクタがこれらのスループットの低下/応答時間の増加を引き起こすかどうかを知りたいですか?

O/Sに問題がある可能性がありますが、ここでは推測的な回答は必要ありません。

+1

「投機的回答」を避けるために、サービス設定とサービスコードを投稿する必要があります。 – oleksii

+0

ありがとう!その500 * 500.私は手にconfigsを持っていないが、私は後で投稿します。実際には、有用な投機的な答えを歓迎するだろうが、質問を投票したくない:) – JMc

+0

ガベージコレクタ用のサーバアルゴリズムが得られるだろう。これは、ゴミを収集している間にすべてのスレッドを一時停止します。これは、スループットテストで顕著になります。 .configファイルの ''要素を使用して無効にすることで、ワークステーションアルゴリズムで同時収集をサポートできるようになります。全体的なスループットを犠牲にして。または、.NET 4.5を待つ –

答えて

2

別のオプションは、それがプライベートメモリのX MB以上かかる、またはYの要求以上のものを持っているかさえ、すべてのZの分をリサイクル場合に構成IISのアプリケーションプールが、この場合には...

をリサイクルするということですおそらくあなたのアプリケーションプールのリサイクルが見えます。

+0

私のリサイクル設定は何分かに設定されていると思われます。そのため、原因は考えられません。 – JMc

+0

分だけが唯一のパラメータではありません。他のパラメータを確認してください:-) –

0

はい、ガベージコレクションは、プロセス内のすべてのスレッドの実行を一時停止させます。このスレッドは、使用しているガベージコレクションのモードと、それ以降の世代に昇格されるメモリの割り当て量に応じて、短くすることも、長くすることもできます。

ガベージコレクションに費やす時間を数値化するために、PerfViewを使用してガベージコレクションメトリックを収集して分析することをお勧めします。

重要であるかどうかを確認するには、GC時間と処理時間を測定する必要があります。

関連する問題