es7.3生產環境問題排查解決

1、 es集羣打開分片數不足
(1)錯誤描述:

Validation Failed: 1: this action would add [5] total shards, but this cluster currently has [998]/[1000] 
maximum shards open;

(2)解決方法:通過API設置集羣分片數量,永久設置
PUT /_cluster/settings
{
" persistent ":{
“cluster”:{
“max_shards_per_node”:100000
}
}
}
2、bulk寫線程池頻繁出現rejected
(1)釋義:
fixed:有着固定大小的線程池,由size屬性指定,允許指定隊列size的大小,用來保存請求,直到有一個空閒的線程來執行改請求,如果es無法把請求放到改隊列中(隊列已滿),該請求將被拒絕。
bulk:此線程池用於批量操作,類型是fixed,size默認爲cpu的數量,隊列的size默認爲200
(2)解決方法:
6.0以前的thread_pool.bulk.size和thread_pool.bulk.queue_size
7.0之後的thread_pool.write.size和thread_pool.write.queue_size
該值和cpu有關,如果時4核cpu該值最大可配置5
thread_pool.write.queue: 4
寫線程池的隊列大小,根據業務量和es的集羣配置慢慢調優
thread_pool.write.queue_size: 500
3、查看集羣命令。
被拒絕的請求
GET _cat/thread_pool?v
查看各線程池大小
GET _nodes/thread_pool
查看集羣設置
GET _cluster/settings
4、主副分片不分配節點
問題:由於es-master節點壓力大,導致出息分片UNASSIGNED狀態,

business_log_755816840749221248_2020  3 p UNASSIGNED
business_log_755816840749221248_2020  3 r UNASSIGNED

(1) 主分片的手動恢復
關閉分片,重新打開,重新觸發初始化

POST business_log_765120700517024256_2019/_close
POST business_log_765120700517024256_2019/_open

(2)副分片的手動恢復
修改副本的值

PUT business_log_765120700517024256_2020/_settings
{
"index":{
"number_of_replicas":0
}
}
PUT business_log_765120700517024256_2020/_settings
{
"index":{
"number_of_replicas":1
}
}

5、設置熔斷比例的大小
緩存過多出現 data large
es7.3的版本

indices.fielddata.cache.size: 30%

控制有多少堆內存是分配給fielddata。當你執行一個查詢需要訪問新的字段值的時候,將會把值加載到內存,然後試着把它們加入到fielddata。如果結果的fielddata大小超過指定的大小 ,爲了騰出空間,別的值就會被驅逐出去。默認情況下,這個參數設置的是無限制 — Elasticsearch將永遠不會把數據從fielddata裏替換出去。

indices.breaker.fielddata.limit: 40%

默認值是JVM堆內存的40%,注意爲了讓設置正常生效,一定要確保 indices.breaker.fielddata.limit 的值
#大於 indices.fielddata.cache.size 的值。否則的話,fielddata 大小一到 limit 閾值就報錯,就永遠到不了 size 閾值,無法觸發對舊數據的交換任務了。
6、待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章