Remote segment backpressure
출처: 문서
본문
원격 세그먼트 역압
Introduced 2.10 {: .label .label-purple }
원격 세그먼트 역압은 기본 샤드의 로컬 커밋 세그먼트보다 원격 세그먼트 스토어가 뒤처질 때 인덱싱 요청을 동적으로 거부하는 샤드 수준의 거부 메커니즘이에요. 원격 세그먼트 역압을 사용하면 원격 스토어와 로컬 기본 스토어 간의 지연을 방지할 수 있어요. 이 지연은 느리거나 실패한 원격 스토어 상호 작용, 원격 스토어 제한, 긴 가비지 컬렉션 일시 중지 또는 높은 CPU 사용률로 인해 발생할 수 있어요.
임계값
원격 세그먼트 역압은 다음 임계값 중 하나라도 위반되면 활성화돼요.
- 연속 실패: _N_회 이상 연속 실패가 발생하면 역압이 활성화돼요. N 값은
remote_store.segment.pressure.consecutive_failures.limit에서 설정할 수 있어요. - 바이트 지연: 바이트 지연은 로컬 커밋 세그먼트에는 있지만 원격 스토어에는 없는 모든 파일의 크기를 합산하여 계산해요. 바이트 지연이 각 새로 고침 후 업로드된 파일 크기(바이트)의 이동 평균에 _K_를 곱한 값보다 크면 역압이 활성화돼요. 분산 계수 _K_는
remote_store.segment.pressure.bytes_lag.variance_factor에서 설정할 수 있어요. 이동 창 크기는remote_store.moving_average_window_size설정을 통해 설정할 수 있어요. - 시간 지연: 시간 지연은 가장 최근 로컬 새로 고침과 가장 최근 원격 스토어 세그먼트 업로드의 타임스탬프를 비교하여 계산해요. 시간 지연이 각 새로 고침 후 새 세그먼트 및 메타데이터 파일을 업로드하는 데 걸린 시간의 이동 평균에 _K_를 곱한 값보다 크면 역압이 활성화돼요. 분산 계수 _K_는
remote_store.segment.pressure.time_lag.variance_factor설정을 통해 설정할 수 있어요. 이동 창 크기는remote_store.moving_average_window_size설정을 통해 설정할 수 있어요.
세그먼트 병합 처리
모든 세그먼트 병합 시 해당 새로 고침이 시작돼요. 이 새로 고침에는 새로 병합된 세그먼트가 있기 때문에 바이트 지연이 즉시 급증해요. 이 급증을 보상하기 위해 바이트 지연과 시간 지연은 원격 스토어가 로컬 기본 스토어보다 한 번 이상의 새로 고침만큼 뒤처진 경우에만 평가돼요. 그러나 연속 실패로 인한 역압은 새로 고침 지연(원격 스토어가 로컬 스토어보다 뒤처진 새로 고침 횟수)에 관계없이 활성화돼요.
원격 세그먼트 역압 설정
원격 세그먼트 역압은 표준 OpenSearch 클러스터 설정에 여러 설정을 추가해요. 이 설정은 동적이므로 클러스터를 다시 시작하지 않고도 기본 역압 동작을 변경할 수 있어요.
다음 표는 역압 활성화에 사용되는 설정을 나열해요. 임계값 계산은 임계값을 참조하세요.
| Setting | Data type | Description |
|---|---|---|
remote_store.segment.pressure.enabled |
Boolean | 원격 세그먼트 역압을 활성화해요. 기본값은 true예요. |
remote_store.segment.pressure.consecutive_failures.limit |
Integer | 원격 세그먼트 역압 활성화를 위한 최소 연속 실패 횟수예요. 기본값은 5예요. |
remote_store.segment.pressure.bytes_lag.variance_factor |
Float | 원격 세그먼트 역압 활성화를 위한 동적 바이트 지연 임계값을 계산하기 위해 이동 평균과 함께 사용되는 분산 계수예요. 기본값은 10이에요. |
remote_store.segment.pressure.time_lag.variance_factor |
Float | 원격 세그먼트 역압 활성화를 위한 동적 시간 지연 임계값을 계산하기 위해 이동 평균과 함께 사용되는 분산 계수예요. 기본값은 10이에요. |
다음 표는 통계에 사용되는 설정을 나열해요.
| Setting | Data type | Description |
|---|---|---|
remote_store.moving_average_window_size |
Integer | 롤링 통계 값을 계산하는 데 사용되는 이동 평균 창 크기로, Remote Store Stats API를 통해 노출돼요. 기본값은 20이에요. 최소 적용 값은 5예요. |