개요
OSCPUWaitMicroseconds 메트릭)과 사용 시간
(OSCPUVirtualTimeMicroseconds 메트릭)의 비율을 계산합니다. 서버가 특정 비율 이상으로 과부하 상태가 되면,
부하를 더 늘리지 않도록 일부 쿼리를 폐기하거나 연결 요청을 차단하는 것이 합리적입니다.
CPU가 유의미한 작업을 수행하고 있다고 판단할 최소 사용 시간을 제어하는 서버 설정
os_cpu_busy_time_threshold가 있습니다. 현재 OSCPUVirtualTimeMicroseconds 메트릭 값이 이 값보다 낮으면,
CPU 과부하는 0으로 간주됩니다.
쿼리 거부
min_os_cpu_wait_time_ratio_to_throw 및
max_os_cpu_wait_time_ratio_to_throw로 제어됩니다. 이 설정이 지정되어 있고 min_os_cpu_wait_time_ratio_to_throw가
max_os_cpu_wait_time_ratio_to_throw보다 작으면, 과부하 비율이 min_os_cpu_wait_time_ratio_to_throw 이상일 때 일정 확률로 쿼리가 거부되며
SERVER_OVERLOADED 오류가 발생합니다. 이 확률은 최소 비율과 최대 비율 사이를 선형 보간하여 결정됩니다. 예를 들어 min_os_cpu_wait_time_ratio_to_throw = 2,
max_os_cpu_wait_time_ratio_to_throw = 6, 그리고 cpu_overload = 4이면, 해당 쿼리는 0.5의 확률로 거부됩니다.
연결 차단
min_os_cpu_wait_time_ratio_to_drop_connection 및
max_os_cpu_wait_time_ratio_to_drop_connection으로 제어됩니다. 이 설정은 서버를 다시 시작하지 않고도 변경할 수 있습니다. 이 설정의 기본 개념은
쿼리를 거부하는 경우와 비슷합니다. 차이점은 이 경우 서버에 과부하가 걸리면
서버 측에서 연결 시도가 거부된다는 점입니다.
리소스 과부하 경고
system.warnings 테이블에 기록합니다. 이러한 임계값은
서버 구성을 통해 조정할 수 있습니다.
예시