클래스: Mongo::Server::Mongo Private
- 상속:
-
객체
- 객체
- Mongo::Server::Mongo
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- BackgroundThread, Event::Publisher, Loggable
- 다음에 정의됨:
- lib/ Mongo/ 서버/ 모니터.rb,
lib/ Mongo/ 서버/ 모니터/connection.rb,
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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터는 서버 외부에서 직접 인스턴스화해서는 안 됩니다.
새 서버 모니터 를 만듭니다.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 76줄 def 초기화(서버, event_listeners, 모니터링, = {}) 올리다 ArgumentError, "잘못된 모니터링 유형: #{모니터링.검사}" 하지 않는 한 모니터링.is_a?(모니터링) 올리다 ArgumentError, '앱 메타데이터 는 필수 항목입니다. ' 하지 않는 한 [:app_metadata] 올리다 ArgumentError, '푸시 모니터 앱 메타데이터 는 필수' 하지 않는 한 [:push_monitor_app_metadata] @server = 서버 @event_listeners = event_listeners @monitoring = 모니터링 @options = .동결 @mutex = 뮤텍스.신규 @s담_뮤텍스 = 뮤텍스.신규 @next_earliest_scan = @next_wanted_scan = 시간.지금 @update_mutex = 뮤텍스.신규 end |
인스턴스 속성 세부 정보
#connection ⇒ Mongo::Server::Monitor::Connection (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
사용할 연결을 반환합니다.
96 97 98 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 96줄 def 연결 @connection end |
#모니터링 ⇒ 모니터링 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
모니터링을 반환합니다.
118 119 120 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 118줄 def 모니터링 @monitoring end |
#options ⇒ 해시 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
반환 옵션 서버 옵션입니다.
99 100 101 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 99줄 def @options end |
#서버 ⇒ 서버 (읽기 전용)
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 이 모니터 가 모니터링 중인 서버 를 반환합니다.
93 94 95 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 93줄 def 서버 @server end |
인스턴스 메서드 세부 정보
#create_push_monitor!(topology_version) ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 162줄 def create_push_monitor!(topology_version) @update_mutex.동기화 do @push_monitor = nil 만약 @push_monitor && !@push_monitor.실행? @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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
서버 를 확인합니다.
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 131줄 def do_work 스캔! # @next_wanted_scan 은 푸시 모니터 에 의해 업데이트될 수 있습니다. # 그러나 종료 플래그를 확인하여 모니터 가 # 스레드는 요청 시 종료됩니다. 루프 do 델타 = @next_wanted_scan - 시간.지금 휴식 하지 않는 한 델타 > 0 신호 = 서버.scan_semapher.wait(델타) 휴식 만약 신호 || @stop_requested end end |
#heartbeat_interval ⇒ Float
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
정기적인 서버 확인 사이의 간격입니다.
104 105 106 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 104줄 def heartbeat_interval [: heartbeat_interval] || DEFAULT_HEARTBEAT_INTERVAL end |
#push_monitor ⇒ Server::PushMonitor | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
푸시 모니터를 사용 중인 경우 푸시 모니터 를 반환합니다.
122 123 124 125 126 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 122줄 def push_monitor @update_mutex.동기화 do @push_monitor end end |
#재시작! ⇒ 스레드
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
현재 스레드가 활성 상태가 아닌 한 서버 모니터 를 다시 시작합니다.
257 258 259 260 261 262 263 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 257줄 def 다시 시작! 만약 @thread && @thread.alive? @thread other 실행! end end |
#run_sdam_flow(result, awaited: false, scan_error: nil) ⇒ Object
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 223줄 def run_sdam_flow(결과, awaited: 거짓, scan_error: nil) @s담_뮤텍스.동기화 do old_description = 서버.description new_description = 설명.신규( 서버.주소, 결과, 평균 왕복 시간: 서버.round_trip_time_calculator.평균 왕복 시간, minimum_round_trip_time: 서버.round_trip_time_calculator.minimum_round_trip_time ) 서버.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를 실행하고 결과적으로 서버 설명을 업데이트하는 등의 검사를 수행합니다.
206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 206줄 def 스캔! # 일반적으로 배경 스레드가 이 메서드를 호출합니다. # 하지만 스캔을 호출하는 것도 가능합니다! 모니터 에 직접 표시합니다. # 한 번에 하나의 스캔만 수행할 수 있습니다. @mutex.동기화 do throttle_scan_ Frequency! 시작 결과 = do_scan 구출 StandardError => e run_sdam_flow({}, scan_error: e) other run_sdam_flow(결과) end end end |
#그만해! ⇒ true | false
배경 스레드를 중지하고 합리적인 시간 동안 종료될 때까지 기다립니다.
151 152 153 154 155 156 157 158 159 160 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 151줄 def 중지! stop_push_monitor! # 슈퍼의 반환 값을 전달합니다. super.탭 do # 중요: 연결 해제는 백그라운드 스레드 이후에 발생해야 합니다. # 종료됩니다. 연결&.연결 해제! end end |
#stop_push_monitor! ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
179 180 181 182 183 184 185 186 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 179줄 def stop_push_monitor! @update_mutex.동기화 do 만약 @push_monitor @push_monitor.중지! @push_monitor = nil end end end |
#to_s ⇒ 객체
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
265 266 267 |
# 파일 'lib/ Mongo/ 서버/ 모니터.rb', 265줄 def to_s "#<#{self.class.name}:#{object_id} #{서버.주소}>" end |