Pivotal Knowledge Base

フォローする

remove-unresponsive-client プロパティーの詳細説明

環境

  • gemfire.properties ファイルに remove-unresponsive-client プロパティーを設定
  • cache.xml ファイルに maximum-message-count を設定

背景

ユーザーガイドで説明されているように、「remove-unresponsive-client」プロパティーで以下のような動作設定を行う。

このプロパティーが true に設定されている場合、プライマリーサーバーは、全てのセカンダリーサーバーと自身から応答不能なクライアントを除外する。クライアントは、サーバーにおける自身のメッセージキューがあふれた場合に応答不能と見なされる。クライアントキューがあふれている間は、当該キューへのメッセージ追加が伴う put 操作はサーバーでブロックされる。

本記事では、このプロパティーに関して、maximum-message-count が cache.xml に設定されていることを前提に、GemFire がどのように振る舞うか(例えば、クライアントの応答遅延・無応答状態にどう対処するか)より詳細な説明を提供する。

説明

デフォルト設定(remove-unresponsive-client=false)の場合、put といったメッセージを生成する全てのリージョン操作は、クライアントキューに新しいメッセージを入れるための空きができるまでブロックされる。したがって、メッセージは失われないが、リージョン操作の性能はクライアントの応答遅延・無応答状態によって悪い影響を受けるかもしれない。

remove-unresponsive-client=true の場合、問題のあるクライアントキュー(CacheClientProxy)は一掃・除外され、リージョン操作はブロックされない。加えて、当該クライアントはサーバーに対する接続を失い、当該クライアント自体が正常動作をしていれば、フェールオーバー動作が発生し、再接続を試みるであろう。クライアントキューに入っていたメッセージは失われるが、クライアントが再接続に成功すれば、新規メッセージの受信を再開する。

結論

remove-unresponsive-client プロパティーの動作は、クライアントの応答遅延・無応答状態が発生した際の信頼性と性能のトレードオフを管理するために、cache.xml における maximum-message-count 属性との組み合わせで決定される。

代替の対処方法として、未送信メッセージをディスクに待避することも可能である。こちらについては、下記ドキュメントを参照のこと。
Limit the Server's Subscription Queue Memory Use

コメント

Powered by Zendesk