클래스: Mongo::Server::Mongo Private
- 상속:
-
객체
- 객체
- Mongo::Server::Mongo
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- BackgroundThread, Event::Publisher, Loggable
- 다음에 정의됨:
- 빌드/ Ruby-driver-v2.19/lib/mongo/ 서버/ 모니터.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 서버/ 모니터/connection.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/ 서버/ 모니터/app_metadata.rb
개요
이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버의 상태를 최신 상태로 유지하기 위해 hello 명령을 통해 서버 를 주기적으로 폴링하는 작업을 담당합니다.
운전자 가 수행하는 다른 작업을 방해하지 않도록 모두 배경 스레드에서 작동합니다.
네임스페이스 아래에 정의됨
클래스: AppMetadata, 연결
상수 요약 접기
- DEFAULT_HEARTBEAT_INTERVAL =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 상태 새로고침의 기본 간격은 10 초입니다.
10.동결
- MIN_SCAN_INTERVAL =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
강제 서버 스캔 사이의 최소 시간입니다. SDAM 사양의 minHeartbeatFrequeencyMS입니다.
0.5.동결
- RTT_WEIGHT_FACTOR =
이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
더 이상 사용되지 않습니다.버전 3.0 에서 제거될 예정입니다.
평균 이동 왕복 시간을 계산하기 위한 가중치 계수(알파)입니다.
0.2.동결
Loggable에서 포함된 상수
인스턴스 속성 요약 접기
-
#connection ⇒ Mongo::Server::Monitor::Connection
읽기 전용
비공개
연결 사용할 연결입니다.
-
#모니터링 ⇒ 모니터링
읽기 전용
비공개
모니터링 모니터링.
-
옵션 #개 ⇒ 해시
읽기 전용
비공개
옵션 서버 옵션입니다.
-
#server ⇒ Server
읽기 전용
비공개
MongoDB Server 이 모니터가 모니터링 중인 서버입니다.
Event::Publisher에 포함된 속성
인스턴스 메서드 요약 접기
- #create_push_monitor!(topology_version) ⇒ 객체 비공개
-
#do_work ⇒ 객체
비공개
서버 를 확인합니다.
-
#heartbeat_interval ⇒ Float
비공개
정기적인 서버 확인 사이의 간격입니다.
-
#initialize(서버, event_listeners, 모니터링, options = {}) ⇒ Monitor
생성자
비공개
새 서버 모니터 를 만듭니다.
-
#push_monitor ⇒ Server::PushMonitor | nil
비공개
푸시 모니터(사용 중인 경우).
-
#재시작! ⇒ 스레드
비공개
현재 스레드가 활성 상태가 아닌 한 서버 모니터 를 다시 시작합니다.
- #run_sdam_flow(result, awaited: false, scan_error: nil) ⇒ Object 비공개
-
#스캔! ⇒ 설명
비공개
스로틀링이 있는 서버 를 확인하고 서버의 설명과 평균 왕복 시간을 업데이트 합니다.
-
#그만해! ⇒ true | false
배경 스레드를 중지하고 합리적인 시간 동안 종료될 때까지 기다립니다.
- #stop_push_monitor! ⇒ 객체 비공개
- #to_s ⇒ 객체 비공개
BackgroundThread에 포함된 메서드
Loggable에 포함된 메서드
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Event::Publisher에 포함된 메서드
생성자 세부 정보
#initialize(서버, event_listeners, 모니터링, options = {}) ⇒ Monitor
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터는 서버 외부에서 직접 인스턴스화해서는 안 됩니다.
새 서버 모니터 를 만듭니다.
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 78 def 초기화(서버, event_listeners, 모니터링, = {}) 하지 않는 한 모니터링.is_a?(모니터링) 올리다 ArgumentError, "잘못된 모니터링 유형: #{모니터링.검사}" end 하지 않는 한 [:app_metadata] 올리다 ArgumentError, '앱 메타데이터 는 필수 항목입니다. ' end 하지 않는 한 [:push_monitor_app_metadata] 올리다 ArgumentError, '푸시 모니터 앱 메타데이터 는 필수' end @server = 서버 @event_listeners = event_listeners @monitoring = 모니터링 @options = .동결 @mutex = 뮤텍스.신규 @s담_뮤텍스 = 뮤텍스.신규 @next_earliest_scan = @next_wanted_scan = 시간.지금 @update_mutex = 뮤텍스.신규 end |
인스턴스 속성 세부 정보
#connection ⇒ Mongo::Server::Monitor::Connection (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
사용할 연결을 반환합니다.
103 104 105 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 103 def 연결 @connection end |
#모니터링 ⇒ 모니터링 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터링을 반환합니다.
125 126 127 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 125 def 모니터링 @monitoring end |
#options ⇒ 해시 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
반환 옵션 서버 옵션입니다.
106 107 108 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 106 def @options end |
#서버 ⇒ 서버 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 이 모니터 가 모니터링 중인 서버 를 반환합니다.
100 101 102 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 100 def 서버 @server end |
인스턴스 메서드 세부 정보
#create_push_monitor!(topology_version) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 173 def create_push_monitor!(topology_version) @update_mutex.동기화 do 만약 @push_monitor && !@push_monitor.실행? @push_monitor = nil end @push_monitor ||= 푸시 모니터.신규( self, topology_version, 모니터링, **Utils.shallow_symbolize_keys(.merge( socket_timeout: heartbeat_interval + 연결.socket_timeout, app_metadata: [:push_monitor_app_metadata], check_document: @connection.check_document )), ) end end |
#do_work ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 를 확인합니다.
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 138 def do_work 스캔! # @next_wanted_scan 은 푸시 모니터 에 의해 업데이트될 수 있습니다. # 그러나 종료 플래그를 확인하여 모니터 가 # 스레드는 요청 시 종료됩니다. 루프 do 델타 = @next_wanted_scan - 시간.지금 만약 델타 > 0 신호 = 서버.scan_semapher.wait(델타) 만약 신호 || @stop_requested 휴식 end other 휴식 end end end |
#heartbeat_interval ⇒ Float
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
정기적인 서버 확인 사이의 간격입니다.
111 112 113 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 111 def heartbeat_interval [: heartbeat_interval] || DEFAULT_HEARTBEAT_INTERVAL end |
#push_monitor ⇒ Server::PushMonitor | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
푸시 모니터를 사용 중인 경우 푸시 모니터 를 반환합니다.
129 130 131 132 133 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 129 def push_monitor @update_mutex.동기화 do @push_monitor end end |
#재시작! ⇒ 스레드
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
현재 스레드가 활성 상태가 아닌 한 서버 모니터 를 다시 시작합니다.
267 268 269 270 271 272 273 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 267 def 다시 시작! 만약 @thread && @thread.alive? @thread other 실행! end end |
#run_sdam_flow(result, awaited: false, scan_error: nil) ⇒ Object
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 236 def run_sdam_flow(결과, awaited: 거짓, scan_error: nil) @s담_뮤텍스.동기화 do old_description = 서버.description new_description = 설명.신규(서버.주소, 결과, 평균 왕복 시간: 서버.round_trip_time_averager.평균 왕복 시간 ) 서버.cluster.run_sdam_flow(서버.description, new_description, awaited: awaited, scan_error: scan_error) 서버.description.탭 do |new_description| 하지 않는 한 awaited 만약 new_description.알 수 없음? && !old_description.알 수 없음? @next_earliest_scan = @next_wanted_scan = 시간.지금 other @next_earliest_scan = 시간.지금 + MIN_SCAN_INTERVAL @next_wanted_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 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 219 def 스캔! # 일반적으로 배경 스레드가 이 메서드를 호출합니다. # 하지만 스캔을 호출하는 것도 가능합니다! 모니터 에 직접 표시합니다. # 한 번에 하나의 스캔만 수행할 수 있습니다. @mutex.동기화 do throttle_scan_ Frequency! 시작 결과 = do_scan 구출 => e run_sdam_flow({}, scan_error: e) other run_sdam_flow(결과) end end end |
#그만해! ⇒ true | false
배경 스레드를 중지하고 합리적인 시간 동안 종료될 때까지 기다립니다.
162 163 164 165 166 167 168 169 170 171 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 162 def 중지! stop_push_monitor! # 슈퍼의 반환 값을 전달합니다. super.탭 do # 중요: 연결 해제는 백그라운드 스레드 이후에 발생해야 합니다. # 종료됩니다. 연결&.연결 해제! end end |
#stop_push_monitor! ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
192 193 194 195 196 197 198 199 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 192 def stop_push_monitor! @update_mutex.동기화 do 만약 @push_monitor @push_monitor.중지! @push_monitor = nil end end end |
#to_s ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
275 276 277 |
# 파일 'build/ruby-driver-v2.19/lib/mongo/server/monitor.rb', 줄 275 def to_s "#<#{self.class.name}:#{object_id} #{서버.주소}>" end |