Elasticsearch 스 레 드 풀 소개
4310 단어 elasticsearch
1. 현재 스 레 드 그룹 상태 보기
curl -XGET 'http://localhost:9200/_nodes/stats?pretty'
"thread_pool" : {
"bulk" : {
"threads" : 32,
"queue" : 0,
"active" : 0,
"rejected" : 0,
"largest" : 32,
"completed" : 659997
},
"index" : {
"threads" : 2,
"queue" : 0,
"active" : 0,
"rejected" : 0,
"largest" : 2,
"completed" : 2
}
위 에서 일부 스 레 드 탱크 의 설정 을 캡 처 했 습 니 다. 그 중에서 가장 주목 해 야 할 것 은 rejected 입 니 다.어떤 스 레 드 풀 active = = threads 는 모든 스 레 드 가 바쁘다 는 것 을 표시 합 니 다. 그러면 다음 새로운 요청 은 quue 에 들 어 갑 니 다. 즉, quue > 0 입 니 다. bulk 의 quue 기본 50 과 같은 quue 크기 가 제한 을 초과 하면 elasticsearch 프로 세 스 는 요청 을 거부 합 니 다 (bulk HTTP 상태 코드 429 에 부 딪 히 면 해당 하 는 거부 횟수 는 rejected 에 누적 됩 니 다.
해결책 은
1. 실패 한 요청 을 기록 하고 다시 보 내기
2. 동시 작성 프로 세 스 개 수 를 줄 이 고 매번 bulk 요청 의 size 를 증가 합 니 다.
2. 핵심 스 레 드 탱크
generic: node discovery 와 같은 일반적인 동작 입 니 다.그것 의 유형 은 기본적으로 cached 입 니 다.index: 이 스 레 드 탱크 는 색인 과 삭제 작업 에 사 용 됩 니 다.그것 의 종 류 는 기본적으로 fixed 이 고, size 는 기본적으로 사용 가능 한 프로세서 의 수량 이 며, 대기 열의 size 는 기본적으로 200 이다.search: 이 스 레 드 탱크 는 검색 과 계수 요청 에 사 용 됩 니 다.그것 의 유형 은 기본적으로 fixed 이 고, size 는 기본적으로 (사용 가능 한 프로세서 의 수량 * 3) / 2) + 1 이 며, 대기 열의 size 는 기본적으로 1000 입 니 다.suggest: 이 스 레 드 탱크 는 제안 기 요청 에 사 용 됩 니 다.그것 의 종 류 는 기본적으로 fixed 이 고, size 는 기본적으로 사용 가능 한 프로세서 의 수량 이 며, 대기 열의 size 는 기본적으로 1000 이다.get: 이 스 레 드 탱크 는 실시 간 GET 요청 에 사 용 됩 니 다.그것 의 종 류 는 기본적으로 fixed 이 고, size 는 기본적으로 사용 가능 한 프로세서 의 수량 이 며, 대기 열의 size 는 기본적으로 1000 이다.bulk: 이 스 레 드 탱크 는 대량 작업 에 사 용 됩 니 다.그것 의 종 류 는 기본적으로 fixed 이 고, size 는 기본적으로 사용 가능 한 프로세서 의 수량 이 며, 대기 열의 size 는 기본적으로 50 이다.percolate: 이 스 레 드 탱크 는 사전 매 칭 기 작업 에 사 용 됩 니 다.그것 의 종 류 는 기본적으로 fixed 이 고, size 는 기본적으로 사용 가능 한 프로세서 의 수량 이 며, 대기 열의 size 는 기본적으로 1000 이다.
3. 스 레 드 탱크 유형
1、cached
모든 요청 에 스 레 드 를 만 들 기 위해 무제 한 스 레 드 탱크 입 니 다.이 스 레 드 풀 은 요청 이 막 히 거나 거부 되 는 것 을 방지 하기 위해 서 입 니 다. 모든 스 레 드 는 시간 초과 (keep alive) 가 있 습 니 다. 기본 5 분 입 니 다. 시간 이 초과 되면 회수 / 종 료 됩 니 다.elasticsearch 의 generic 스 레 드 탱크 는 이 유형 을 사용 합 니 다.최근 5.0.0 - alpha 2 버 전에 서 이 유형의 스 레 드 풀 을 제거 한 것 으로 밝 혀 졌 다.
threadpool:
generic:
keep_alive: 2m
2、fixed
고정 크기 의 스 레 드 탱크 가 있 습 니 다. 크기 는 size 속성 으로 지정 되 어 있 습 니 다. 기본 값 은 5 * cores 수 입 니 다. 요청 을 수행 할 때 까지 대기 열 (quue size 속성 지정, 기본 값 은 - 1, 즉 무제 한) 을 지정 할 수 있 습 니 다.Elasticsearch 에서 요청 을 대기 열 에 넣 을 수 없다 면 이 요청 은 거 부 됩 니 다.
threadpool:
index:
size: 30
queue_size: 1000
3、scaling
가 변 크기 의 pool, 크기 는 부하 에 따라 1 부터 size 사이, 같은 keepalive 매개 변 수 는 유 휴 스 레 드 가 회수 되 는 시간 을 지정 합 니 다.
threadpool:
warmer:
size: 8
keep_alive: 2m
4. 스 레 드 탱크 설정 수정
1、elasticsearch.yml
threadpool.index.type: fixed
threadpool.index.size: 100
threadpool.index.queue_size: 500
2、Rest API
curl -XPUT 'localhost:9200/_cluster/settings' -d '{
"transient": {
"threadpool.index.type": "fixed",
"threadpool.index.size": 100,
"threadpool.index.queue_size": 500
}
}'
5. bulk 이상 검사
es bulk api 타 임 스 를 사용 하면 다음 과 같 습 니 다.
4. 567913. 이 오 류 는 기본 크기 가 50 인 대기 열 (queue) 에서 처리 할 수 없 음 이 분명 합 니 다. 해결 방법 은 bulk 대기 열의 길 이 를 늘 리 는 것 입 니 다.
elasticsearch.yml
EsRejectedExcutionException[rejected execution(queue capacity 50) on.......]
총화
Elasticsearch 의 스 레 드 탱크 는 자바 자체 의 패키지 입 니 다. 사용 자 는 관련 설정 을 변경 할 수 있 지만 공식 적 으로 기본 값 을 수정 하 는 것 을 강력 히 권장 하지 않 습 니 다. 왜 다음 세 번 째 글 을 읽 을 수 있 습 니까?
관련 문서
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-nodes-stats.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-threadpool.html
https://www.elastic.co/guide/en/elasticsearch/guide/current/_don_8217_t_touch_these_settings.html#_threadpools
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
App Search의 본문 파싱(저를 포함하여) 일부 사람들이 Swifttype 사이트 검색에서 놓친 기능은 CSS 선택기를 사용하여 콘텐츠를 구문 분석할 수 있다는 것입니다. App Search 크롤러는 지정한 웹사이트에서 모든 콘텐츠를 추출하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.