Rethrottle API
Rethrottle API
다음 API를 사용하면 이미 실행 중인 _reindex, _update_by_query, _delete_by_query 작업의 requests_per_second를 동적으로 변경할 수 있어요.
도입 버전 1.0
엔드포인트
POST /_delete_by_query/{task_id}/_rethrottle
POST /_reindex/{task_id}/_rethrottle
POST /_update_by_query/{task_id}/_rethrottle
경로 파라미터
| 파라미터 | 데이터 타입 | 설명 |
|---|---|---|
| task_id | String | 재스로틀(rethrottle)하려는 실행 중인 태스크의 고유 식별자예요. |
쿼리 파라미터
| 파라미터 | 데이터 타입 | 설명 |
|---|---|---|
| requests_per_second | Float | 태스크에 적용할 새 스로틀 값이에요. 스로틀을 비활성화하려면 -1을 사용해요. 선택 사항이에요. |
예제 요청: 실행 중인 delete by query 태스크 재스로틀
POST /_delete_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=10
예제 요청: 실행 중인 reindex 태스크 재스로틀
POST /_reindex/<YOUR_TASK_ID>/_rethrottle?requests_per_second=20
예제 요청: 실행 중인 update by query 태스크 재스로틀
POST /_update_by_query/<YOUR_TASK_ID>/_rethrottle?requests_per_second=5
예제 응답
다음 응답은 활성 update_by_query 태스크에 대한 세부 정보를 제공해요:
{
"nodes": {
"bvv8SKpiRhOhF9_Bu8gZ7w": {
"name": "opensearch-node1",
"transport_address": "172.18.0.4:9300",
"host": "172.18.0.4",
"ip": "172.18.0.4:9300",
"roles": [
"cluster_manager",
"data",
"ingest",
"remote_cluster_client"
],
"attributes": {
"shard_indexing_pressure_enabled": "true"
},
"tasks": {
"bvv8SKpiRhOhF9_Bu8gZ7w:640": {
"node": "bvv8SKpiRhOhF9_Bu8gZ7w",
"id": 640,
"type": "transport",
"action": "indices:data/write/update/byquery",
"status": {
"total": 4785,
"updated": 1000,
"created": 0,
"deleted": 0,
"batches": 1,
"version_conflicts": 0,
"noops": 0,
"retries": {
"bulk": 0,
"search": 0
},
"throttled_millis": 0,
"requests_per_second": 50,
"throttled_until_millis": 2146
},
"description": "update-by-query [test-rethrottle] updated with Script{type=inline, lang='painless', idOrCode='ctx._source.new_field = 'updated'', options={}, params={}}",
"start_time_in_millis": 1751310547697,
"running_time_in_nanos": 9567425129,
"cancellable": true,
"cancelled": false,
"headers": {
"X-Opaque-Id": "1b911516-44cd-4920-8c1e-79368ea7cdfd"
},
"resource_stats": {
"average": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"total": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"min": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"max": {
"cpu_time_in_nanos": 0,
"memory_in_bytes": 0
},
"thread_info": {
"thread_executions": 0,
"active_threads": 0
}
}
}
}
}
}
}
응답 본문 필드
응답은 재스로틀된 작업에 대한 태스크 및 노드 수준의 자세한 정보를 제공해요.
| 필드 | 데이터 타입 | 설명 |
|---|---|---|
| nodes | Object | 각 노드의 태스크에 대한 세부 정보로 매핑되는 노드 ID 맵이에요. |
| nodes.<node_id>.name | String | 태스크가 실행 중인 노드의 이름이에요. |
| nodes.<node_id>.transport_address | String | 노드의 전송 주소예요. |
| nodes.<node_id>.host | String | 호스트 IP 주소예요. |
| nodes.<node_id>.ip | String | IP 주소와 포트예요. |
| nodes.<node_id>.roles | Array | 노드에 할당된 역할이에요. |
| nodes.<node_id>.attributes | Object | 노드 수준 속성이에요. |
| nodes.<node_id>.tasks | Object | 각 태스크에 대한 자세한 정보로 매핑되는 태스크 ID 맵이에요. |
| nodes.<node_id>.tasks.<task_id>.type | String | transport 같은 태스크 유형이에요. |
| nodes.<node_id>.tasks.<task_id>.action | String | 수행 중인 특정 작업(action)이에요(예: reindex ). |
| nodes.<node_id>.tasks.<task_id>.status | Object | 태스크의 현재 상태예요. |
| nodes.<node_id>.tasks.<task_id>.status.total | Integer | 처리할 총 문서 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.created | Integer | 생성된 문서 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.updated | Integer | 업데이트된 문서 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.deleted | Integer | 삭제된 문서 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.batches | Integer | 처리된 배치 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.version_conflicts | Integer | 버전 충돌 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.noops | Integer | 무작동(no-op) 업데이트 수예요. |
| nodes.<node_id>.tasks.<task_id>.status.retries | Object | 벌크 및 검색 작업의 재시도 통계예요. |
| nodes.<node_id>.tasks.<task_id>.status.requests_per_second | Float | 초당 요청 수로 나타낸 현재 스로틀 속도예요. |
| nodes.<node_id>.tasks.<task_id>.status.throttled_millis | Integer | 태스크가 스로틀된 시간(밀리초)이에요. |
| nodes.<node_id>.tasks.<task_id>.status.throttled_until_millis | Integer | 태스크가 스로틀 상태로 유지될 것으로 예상되는 시간(밀리초)이에요. |
| nodes.<node_id>.tasks.<task_id>.description | String | 태스크에 대한 사람이 읽을 수 있는 설명이에요. |
| nodes.<node_id>.tasks.<task_id>.start_time_in_millis | Integer | 에포크 밀리초로 나타낸 태스크 시작 시간이에요. |
| nodes.<node_id>.tasks.<task_id>.running_time_in_nanos | Integer | 나노초로 나타낸 태스크 실행 시간이에요. |
| nodes.<node_id>.tasks.<task_id>.cancellable | Boolean | 태스크를 취소할 수 있는지 여부예요. |
| nodes.<node_id>.tasks.<task_id>.cancelled | Boolean | 태스크가 취소되었는지 여부예요. |
| nodes.<node_id>.tasks.<task_id>.headers | Object | 태스크와 연결된 선택적 HTTP 헤더예요. |
| nodes.<node_id>.tasks.<task_id>.resource_stats | Object | 리소스 사용량에 대한 통계예요. |
출처: 문서