クラス: Mongo::Server::MongoDB Private
- 継承:
-
オブジェクト
- オブジェクト
- Mongo::Server::Monitor
- 次による拡張機能。
- 転送可能
- 次のことが含まれます。
- バックグラウンドスレッド 、イベント::Publisher 、ログ可能
- 定義:
- lib/mongo/サーバー/monitor.rb
、lib/mongo/サーバー / monitor/
connection.rb、lib/mongo/サーバー/monitor/app_metadata.rb
Overview
このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバーのステータスが最新になるよう、 hello コマンドでサーバーを定期的にポーリングする 必要があります。
ドライバーによって実行される他の操作を中断しないように、すべてがバックグラウンド スレッドで動作します。
名前空間で定義済み
クラス: AppMetadata 、 Connection
定数の概要の削減
- DEFAULT_HEARTB_Interval =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー ステータスが更新されるデフォルトの間隔は10秒です。
10.freeze
- MIN_SCAN_InterVAL =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
強制サーバースキャンの最小時間。 は、SDAM 仕様の minハートビートFrequencyMS です。
0.5.freeze
- RTT_WEEKS_FACTOR =
この定数は、プライベート API の一部です。 この定数は将来削除または変更される可能性があるため、可能な限り使用しないでください。
非推奨。バージョン3.0で削除されます。
平均の移動ラウンド トリップ時間を計算するための重み係数(アルファベット)。
0.2.freeze
Loggableに含まれる定数
インスタンス属性の概要を折りたたむ
-
#接続= Mongo::Server::MongoDB::Connection
readOnly
private
接続 使用する接続。
-
#monitoring ⇒ Monitoring
readOnly
private
監視 監視。
-
#options ⇒ Hash
readOnly
private
オプション サーバー オプション。
-
#server ⇒ Server
readOnly
private
サーバー このモニターが監視しているサーバー。
Event::Publisherに含まれる属性
インスタンス メソッドの概要を折りたたむ
- create_push_monitor を使用します。 (top logical_version) = オブジェクト private
-
# do_work =オブジェクト
private
サーバーのチェックを実行します。
-
#heartbeat_interval ⇒ Float
private
定期的なサーバー チェックの間隔。
-
#初期化(サーバー、イベント_リスナー、モニタリング、オプション = {}) = モニター
コンストラクター
private
新しいサーバー モニターを作成します。
-
#push_monitor ⇒ Server::PushMonitor | nil
private
プッシュ モニター(使用されている場合)。
-
#再起動時 スレッド
private
現在のスレッドがアベイラビリティーがない限り、サーバー モニターを再起動します。
- # run_sam_flow (result、waited: false、scan_error: nil) = オブジェクト private
-
#スキャン詳しくは、 説明を参照してください
private
スロットリングを使用してサーバーのチェックを実行し、サーバーの説明と平均ラウンド トリップ時間を更新します。
-
#停止します。 = true | false
バックグラウンド スレッドを停止し、十分な時間、終了するまで待ちます。
- # stop_push_monitor を使用します。 = オブジェクト private
- # to_s =オブジェクト private
バックグラウンドスレッドに含まれるメソッド
Loggableに含まれるメソッド
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Event::Publisherに含まれるメソッド
コンストラクターの詳細
#初期化(サーバー、イベント_リスナー、モニタリング、オプション = {}) =モニター
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
モニターは、サーバーの外部で直接インスタンス化されないでください。
新しいサーバー モニターを作成します。
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 78 デフォルト 初期化(サーバー, event_listenners, モニタリング, = {}) ただし、 モニタリング.is_a?(モニタリング) 発生 ArgumentError, "モニタリングのタイプが正しくありません: #{ Monitoring . explain } " end ただし、 [:app_metadata] 発生 ArgumentError, アプリ メタデータは必須 です 。 end ただし、 [:push_monitor_app_metadata] 発生 ArgumentError, 'プッシュ モニター アプリのメタデータ が必要です' end @server = サーバー @event_listenners = event_listenners @monitoring = モニタリング @options = .freeze @mutex = ミューテックス.新着情報 @sam_Mutex = ミューテックス.新着情報 @next_earrest_scan = @next_waited_scan = 時間.になりました @update_mutex = ミューテックス.新着情報 end |
インスタンス属性の詳細
#接続= Mongo::Server::MongoDB::Connection (readonly)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
接続を返します 使用する接続を返します。
103 104 105 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 103 デフォルト 接続 @ connection end |
#monitoring ⇒ Monitoring (readonly)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
監視 監視を返します。
125 126 127 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 125 デフォルト モニタリング @monitoring end |
オプション=ハッシュ(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバー オプションのオプションを返します。
106 107 108 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 106 デフォルト @options end |
#サーバー=サーバー(読み取り専用)
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
このモニターが監視しているサーバーを返します。
100 101 102 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 100 デフォルト サーバー @server end |
インスタンス メソッドの詳細
create_push_monitor を使用します。 (top logical_version) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 173 デフォルト create_push_monitor.(topic) @update_mutex.同期 行う 場合 @push_monitor & & !@push_monitor.実行中 @push_monitor = nil end @push_monitor ||= RustMongoDB.新着情報( 自己, topic, モニタリング, **Utils.slow_symbols_keys(.merge( socket_timeout: heartbeat_Interval + 接続.socket_timeout, app_metadata: [:push_monitor_app_metadata], checkpoint_document: @ connection.checkpoint_document )), ) end end |
# do_work =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
サーバーのチェックを実行します。
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 138 デフォルト do_work スキャンします。 # @next_waited_scan はプッシュ モニターによって更新される可能性があります。 # ただし、終了フラグをチェックする必要があるため、モニターは 要求されると終了します。 ループ 行う デルタ = @next_waited_scan - 時間.になりました 場合 デルタ > 0 シグナル送信 = サーバー.scan_smahour.待機する(デルタ) 場合 シグナル送信 || @stop_requested break end else break end end end |
#heartbeat_interval ⇒ Float
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
定期的なサーバー チェックの間隔。
111 112 113 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 111 デフォルト heartbeat_Interval [: heartbeat_Interval] || DEFAULT_HEARTB_Interval end |
#push_monitor ⇒ Server::PushMonitor | nil
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
プッシュ モニターを使用している場合は、その値を返します。
129 130 131 132 133 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 129 デフォルト push_monitor @update_mutex.同期 行う @push_monitor end end |
#再起動時 スレッド
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
現在のスレッドがアベイラビリティーがない限り、サーバー モニターを再起動します。
270 271 272 273 274 275 276 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 270 デフォルト 再起動します。 場合 @thread & & @thread.alive? @thread else 実行します。 end end |
# run_sam_flow (result、waited: false、scan_error: nil) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 236 デフォルト run_sam_flow(結果, 次の操作を待機しました。 false, scan_error: nil) @sam_Mutex.同期 行う old_description = サーバー.説明 new_description = 説明.新着情報( サーバー.address, 結果, Average_round_drop_time: サーバー.round_drop_time_calculator.Average_round_drop_time, minimum_round_drop_time: サーバー.round_drop_time_calculator.minimum_round_drop_time ) サーバー.クラスター.run_sam_flow(サーバー.説明, new_description, 次の操作を待機しました。 待機しました, scan_error: scan_error) サーバー.説明.タップ 行う |new_description| ただし、 待機しました 場合 new_description.不明な場合 & & !old_description.不明な場合 @next_earrest_scan = @next_waited_scan = 時間.になりました else @next_earrest_scan = 時間.になりました + MIN_SCAN_Interval @next_waited_scan = 時間.になりました + heartbeat_Interval end end end end end |
#スキャン詳しくは、説明を参照してください
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
システム クロックが逆方向に移動した場合、このメソッドは非常に長時間休止する可能性があります。
このメソッドの戻り値は非推奨です。 バージョン3.0.0では、このメソッドには戻り値がありません。
スロットリングを使用してサーバーのチェックを実行し、サーバーの説明と平均ラウンド トリップ時間を更新します。
サーバーが MIN_SCAN_InterVAL 秒未満前にチェックされていた場合は、最後のチェックから MIN_SCAN_Interval 秒が経過するまで休止します。 次に、監視対象のサーバーで hello を実行し、その結果サーバーの説明を更新するチェックを実行します。
219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 219 デフォルト スキャンします。 # 通常、バックグラウンド スレッドはこのメソッドを呼び出します。 # ただし、スキャンを呼び出すことも可能です。モニターに直接表示。 # 一度に実行できるスキャンは 1 つだけです。 @mutex.同期 行う throttle_scan_frequency begin 結果 = do_scan ヘルプ => e run_sam_flow({}, scan_error: e) else run_sam_flow(結果) end end end |
#停止します。 = true | false
バックグラウンド スレッドを停止し、十分な時間、終了するまで待ちます。
162 163 164 165 166 167 168 169 170 171 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 162 デフォルト 停止します。 stop_push_monitor. フォワードスーパーの戻り値 スーパー.タップ 行う 重要: 切断はバックグラウンド スレッドの後に実行される必要があります # は終了します。 接続&.切断します。 end end |
# stop_push_monitor を使用します。 =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
192 193 194 195 196 197 198 199 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 192 デフォルト stop_push_monitor. @update_mutex.同期 行う 場合 @push_monitor @push_monitor.停止します。 @push_monitor = nil end end end |
# to_s =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
278 279 280 |
# ファイル 'lib/mongo/ サーバー/monitor.rb', 行 278 デフォルト to_s " # { Security . Class . name } : #{ object_id } #{ サーバー . アドレス } > " end |