2016-07-13 6 views
0

ノード[A、B、C]を持つcassandraクラスタがあるシナリオを考えてみましょう。クライアントAが要求を行い、ノードAに移動します。一時停止されます。今、クライアントの要求が GC停止中のCassandraクライアントの動作

意志の要求は別のノードに行くか、それに達した後にクライアント要求が

  • GC一時停止の開始に到達する前に、以下の例で

    1. GC一時停止の開始クライアント要求の動作がどうなりますか指定されたタイムアウトまで応答を待っています。

      また、このGCの休止時間を考慮して、キャンドルドのレイテンシ測定基準を読みますか?

  • 答えて

    1

    私が知る限り、ドライバーはいつノードがGC一時停止を経験しているか認識していません。 GCの一時停止は一般的には短いと仮定しています。

    私が見てきたことから、GC一時停止中にノードに到着した場合に、時折、いくつかの要求の応答時間が急上昇します。

    GCの一時停止が十分に長い場合、クライアントはタイムアウトエラーが発生し、要求を再試行する必要があります。

    私はCassandraが提供するレイテンシ測定基準を使用していません。クライアントアプリケーションのレイテンシを測定する方が正確だと思います。 GC休止からのレイテンシスパイクを無視する場合は、スパニングレイテンシー時間に影響されない中間レイテンシ時間を測定します。スパイクを考慮する場合は、スパイクが平均を引き上げるまでの平均待ち時間を計算します。

    +0

    クライアントアプリケーションのレイテンシメトリックを測定することに同意します。私のクライアントメトリックでは、レイテンシスパイクを見ることができます。キャッサンドラの読み取りレイテンシメトリックのように、このようなスパイクは観察されません。だから、これはgcの一時停止のせいかもしれないと思った。とにかくこれを確認するには? – Vikee

    +0

    簡単な方法があるかどうかはわかりません。あなたはgcログを生成するようにCassandraを設定することができます。そして、gcがいつ発生し、どれくらいかかったかを見ることができます。特定の要求がどのノードに送られたかを正確に知るのは難しいので、すべてのノードを調べなければなりません。私のクラスターの1つを見ると、GCは通常、0.01秒から.09秒を要していますが、時には2.91秒の長いものがあります。 –

    関連する問題