Cluster manager task throttling
출처: 문서
본문
클러스터 관리자 작업 제한
많은 클러스터 상태 업데이트(예: 매핑 정의 또는 인덱스 생성)의 경우 노드가 클러스터 관리자에게 작업을 제출해요. 클러스터 관리자는 이러한 작업을 위한 대기 작업 큐를 유지 관리하며 단일 스레드 환경에서 실행해요. 노드가 put-mapping 또는 스냅샷 작업과 같은 수만 개의 리소스 집약적 작업을 보내면 이러한 작업이 큐에 쌓여 클러스터 관리자를 넘치게 할 수 있어요. 이는 클러스터 관리자의 성능에 영향을 미치고 결과적으로 전체 클러스터의 가용성에 영향을 줄 수 있어요.
첫 번째 방어선은 호출자 노드에 메커니즘을 구현하여 클러스터 관리자의 작업 과부하를 방지하는 것이에요. 그러나 이러한 메커니즘이 마련되어 있더라도 클러스터 관리자에게는 자체 보호를 위한 내장된 방법, 즉 클러스터 관리자 작업 제한이 필요해요.
기본적으로 클러스터 관리자는 미리 정의된 제한 한도를 사용하여 작업을 거부할지 여부를 결정해요. 이러한 한도를 수정하거나 특정 작업 유형에 대한 제한을 비활성화할 수 있어요.
클러스터 관리자는 작업 유형에 따라 작업을 거부해요. 들어오는 작업에 대해 클러스터 관리자는 대기 작업 큐에서 동일한 유형의 작업 총 수를 평가해요. 이 숫자가 해당 작업 유형의 임계값을 초과하면 클러스터 관리자는 들어오는 작업을 거부해요. 작업을 거부해도 다른 유형의 작업에는 영향을 미치지 않아요. 예를 들어 클러스터 관리자가 put-mapping 작업을 거부하더라도 이후의 create-index 작업은 계속 수락할 수 있어요.
클러스터 관리자가 작업을 거부하면 노드는 지수 백오프를 사용하여 재시도를 수행하고 작업을 클러스터 관리자에게 다시 제출해요. 시간 제한 기간 내에 재시도가 성공하지 못하면 OpenSearch는 클러스터 시간 초과 오류를 반환해요.
제한 한도 설정
cluster_manager.throttling.thresholds 객체에 제한 한도를 지정하고 OpenSearch 클러스터 설정을 업데이트하여 제한 한도를 설정할 수 있어요. 이 설정은 동적이므로 클러스터를 다시 시작하지 않고도 이 기능의 동작을 변경할 수 있어요.
기본적으로 모든 작업 유형에 대해 제한이 활성화되어 있어요. 특정 작업 유형에 대한 제한을 비활성화하려면 해당 임계값을 -1로 설정하세요.
{: .note}
요청 형식은 다음과 같아요.
PUT _cluster/settings
{
"persistent": {
"cluster_manager.throttling.thresholds" : {
"<task-type>" : {
"value" : <threshold>
}
}
}
}
cluster_manager.throttling.thresholds 객체에는 다음 필드가 포함돼요.
| 필드 이름 | 설명 |
|---|---|
task-type |
작업 유형이에요. 유효한 작업 유형 목록은 지원되는 작업 유형 및 기본 임계값을 참조하세요. |
<task-type>.value |
클러스터 관리자의 대기 작업 큐에 있는 task-type 유형의 최대 작업 수예요. 각 작업 유형의 기본 임계값은 지원되는 작업 유형 및 기본 임계값을 참조하세요. |
지원되는 작업 유형 및 기본 임계값
다음 표는 지원되는 모든 작업 유형과 기본 제한 임계값을 나열해요.
| 작업 유형 | 임계값 |
|---|---|
create-index |
50 |
update-settings |
50 |
cluster-update-settings |
50 |
auto-create |
200 |
delete-index |
50 |
delete-dangling-index |
50 |
create-data-stream |
50 |
remove-data-stream |
50 |
rollover-index |
200 |
index-aliases |
200 |
put-mapping |
10000 |
create-index-template |
50 |
remove-index-template |
50 |
create-component-template |
50 |
remove-component-template |
50 |
create-index-template-v2 |
50 |
remove-index-template-v2 |
50 |
put-index-field-domains |
50 |
put-pipeline |
50 |
delete-pipeline |
50 |
put-search-pipeline |
50 |
delete-search-pipeline |
50 |
create-persistent-task |
50 |
finish-persistent-task |
50 |
remove-persistent-task |
50 |
update-task-state |
50 |
create-query-group |
50 |
delete-query-group |
50 |
update-query-group |
50 |
put-script |
50 |
delete-script |
50 |
put-repository |
50 |
delete-repository |
50 |
create-snapshot |
50 |
delete-snapshot |
50 |
update-snapshot-state |
5000 |
restore-snapshot |
50 |
cluster-reroute-api |
50 |
예제 요청
다음 요청은 put-mapping 작업 유형의 제한 임계값을 100으로 설정해요.
PUT _cluster/settings
{
"persistent": {
"cluster_manager.throttling.thresholds": {
"put-mapping": {
"value": 100
}
}
}
}
{% include copy-curl.html %}