ES集群異常處理與進(jìn)階實(shí)踐

failed to execute pipeline for a bulk request問(wèn)題

客戶使用場(chǎng)景是使用第三方工具大批量往ES寫入數(shù)據(jù),報(bào)錯(cuò)寫入失敗嫡良,需排查。

已知情況:

  1. 當(dāng)前環(huán)境各組件運(yùn)行正常献酗,數(shù)據(jù)由HBase側(cè)不停寫入ES

  2. 索引主分片數(shù)10個(gè)寝受,副本1個(gè)

  3. ES HEAP設(shè)置是8GB,JVM內(nèi)存資源較為緊張

問(wèn)題分析:

查報(bào)錯(cuò)日志推斷是寫入側(cè)推送數(shù)據(jù)過(guò)快罕偎,ES處理能力不足導(dǎo)致很澄!

解決辦法:

  1. 常規(guī)場(chǎng)景下應(yīng)該下調(diào)往ES推送的數(shù)據(jù)大小或頻率。

  2. 增大ES的內(nèi)存,現(xiàn)場(chǎng)距離ES內(nèi)存峰值30GB仍有很大空間甩苛。

  3. 考慮線程池過(guò)小導(dǎo)致蹂楣,參考后面章節(jié)。

實(shí)際處理:

略微下調(diào)主分片個(gè)數(shù)使其均勻分布(10 -> 8)浪藻,將索引的副本數(shù)從1減為0捐迫,相當(dāng)于寫入壓力減少一半,至此現(xiàn)場(chǎng)問(wèn)題解決爱葵,沒再出現(xiàn)上述報(bào)錯(cuò)施戴。

磁盤I/O異常引起的問(wèn)題修復(fù)

用戶在例行巡檢過(guò)程發(fā)現(xiàn)es有data節(jié)點(diǎn)處于停止?fàn)顟B(tài),進(jìn)行啟動(dòng)后萌丈,頁(yè)面進(jìn)度條顯示綠色已完成赞哗,但實(shí)際進(jìn)程啟動(dòng)失敗了。

問(wèn)題排查與處理:

  1. 排查節(jié)點(diǎn)日志辆雾,發(fā)現(xiàn)不能訪問(wèn)數(shù)據(jù)路徑肪笋,報(bào)錯(cuò)關(guān)鍵內(nèi)容如下:

    Unable to access ‘path.data’ (/mnt/elasticsearch/slave/data)……

  2. 檢查掛載磁盤,使用命令df -Thlsblk -f

    發(fā)現(xiàn)磁盤沒有占滿度迂,使用容量還有剩余很多藤乙,文件系統(tǒng)為xfs

  3. cd到數(shù)據(jù)路徑惭墓,沒有報(bào)錯(cuò)坛梁,但ls有報(bào)錯(cuò):ls: cannot open directory Input/output error。據(jù)此懷疑磁盤或文件系統(tǒng)故障腊凶。我們先排除文件系統(tǒng)故障划咐。

  4. 此時(shí)設(shè)備已經(jīng)處于不可用狀態(tài),先嘗試重啟機(jī)器(reboot)-> 就這樣解決了钧萍。

  5. 如果重啟沒有解決褐缠,依然是Input/output error,那么嘗試進(jìn)行文件系統(tǒng)修復(fù)操作如下:

  6. 從【2】中獲取到要修復(fù)的掛載點(diǎn)风瘦,如/dev/sdb

  7. xfs的文件系統(tǒng)队魏,使用如下命令進(jìn)行修復(fù):xfs_repair /dev/sdb

  8. 正常的話要提示“設(shè)備或資源忙”,"couldn't initialize XFS library",需要先取消掛載umount /dev/sdb

  9. 繼續(xù)執(zhí)行修復(fù):

xfs_repair /dev/sdb -L

Phase 1 - find and verify superblock...
Phase 2 - using internal log
- zero log...
Phase 4 - check for duplicate blocks...
- setting up duplicate extent list...
- check for inodes claiming duplicate blocks...
- agno = 0
- agno = 3
- agno = 4
- agno = 2
- agno = 5

- 【注:有剪輯省略內(nèi)容】

Phase 5 - rebuild AG headers and trees...
- reset superblock...
Phase 6 - check inode connectivity...
- resetting contents of realtime bitmap and summary inodes
- traversing filesystem ...
- traversal finished ...
- moving disconnected inodes to lost+found ...
Phase 7 - verify and correct link counts...
done
  1. 修復(fù)完成后再把磁盤掛上万搔,即可生效:mount /dev/sdb /mnt/elasticsearch/data器躏。經(jīng)實(shí)測(cè),數(shù)據(jù)沒有丟失蟹略,也就是不會(huì)使情況更糟——要么修好了登失,要么修不好保持原樣。

p.s:這個(gè)問(wèn)題不是ES自身引起的挖炬,而是外界干擾揽浙,不要浪費(fèi)太多時(shí)間去處理。如果修復(fù)失敗,報(bào)修硬件馅巷。

http請(qǐng)求長(zhǎng)度超過(guò)限制

最近(22年10月)接用戶反饋膛虫,使用ES查詢的索引表越來(lái)越多了,出現(xiàn)“400 Bad Request”

問(wèn)題描述:

ElasticSearch exception:too_long_frame_exception钓猬,reason:An HTTP line is larger than 4096 bytes稍刀。


ElasticsearchStatusException[Elasticsearch exception [type=too_long_frame_exception, reason=An HTTP line is larger than 4096 bytes.]]

    at org.elasticsearch.rest.BytesRestResponse.errorFromXContent(BytesRestResponse.java:177)

    at org.elasticsearch.client.RestHighLevelClient.parseEntity(RestHighLevelClient.java:526)

解決辦法:

官網(wǎng)有如下3個(gè)參數(shù)控制請(qǐng)求大小:

es http容量參數(shù)

需在elasticserach.yml中設(shè)置ES參數(shù)(http.max_initial_line_length默認(rèn)4kb敞曹,具體大小根據(jù)自己實(shí)際情況設(shè)置):

http.max_initial_line_length: 8k
http.max_header_size: 16k
http.max_content_length: 500mb

如果有集群管理账月,從集群頁(yè)面的自定義配置中添加,保存澳迫,最后重啟ES集群局齿。

ES的線程池設(shè)置

ElasticSearch開箱即用,在生產(chǎn)環(huán)境一般不需要對(duì)參數(shù)進(jìn)行特別調(diào)優(yōu)橄登,但在某些特殊抓歼、極端場(chǎng)景下(如壓測(cè))則需要對(duì)ES各項(xiàng)服務(wù)線程池進(jìn)行設(shè)置。

問(wèn):什么時(shí)候才需要調(diào)整這些參數(shù)拢锹?

答:除了剛才提到的壓測(cè)情境谣妻,在遇到相關(guān)報(bào)錯(cuò)時(shí),根據(jù)日志提示調(diào)整卒稳。

通過(guò)curl -XGET 'http://localhost:9200/_nodes/stats?pretty' 接口觀察thread_pool部分的統(tǒng)計(jì)拌禾,關(guān)注rejected的值,elasticsearch將拒絕請(qǐng)求(bulk HTTP狀態(tài)碼429)的次數(shù)累加到rejected中展哭。

問(wèn):怎么調(diào)整這些參數(shù)?

答:2.x版本可API動(dòng)態(tài)設(shè)置闻蛀,在ES 5版本之后就不能動(dòng)態(tài)設(shè)置這些參數(shù)了匪傍,通過(guò)修改ES主配置文件,然后重啟ES生效觉痛。("reason": "transient setting thread_pool.write.queue_size, not dynamically updateable")

問(wèn):最佳實(shí)踐是什么役衡?

答:非必要不調(diào)整,獨(dú)占時(shí)最大化薪棒。

參考:

thread_pool.write.size:cpu核數(shù)+1
thread_pool.search.size: (最大cpu核數(shù)*3/2+1)
thread_pool.write.queue_size: 1000
thread_pool.search.queue_size: 1000

ES的雙網(wǎng)分離設(shè)置

如果在生產(chǎn)環(huán)境配置了管理網(wǎng)和業(yè)務(wù)網(wǎng)分離(一般分別是千兆網(wǎng)和萬(wàn)兆網(wǎng))手蝎,怎么設(shè)置ES比較合理?

ES關(guān)于網(wǎng)絡(luò)的配置參數(shù)豐富繁雜(它們都不是可動(dòng)態(tài)更新的)俐芯,ES雙網(wǎng)分離場(chǎng)景的最佳實(shí)踐是ES集群內(nèi)部采用萬(wàn)兆-業(yè)務(wù)網(wǎng)棵介,對(duì)外服務(wù)則雙網(wǎng)都通,有管理及合規(guī)要求時(shí)按照要求設(shè)置單一網(wǎng)絡(luò)吧史。

實(shí)踐舉例:

elasticsearch.yml中進(jìn)行修改邮辽,首先注釋掉network.host配置。

http.host是傳入 HTTP 請(qǐng)求綁定到的端口;transport.host是要綁定用于節(jié)點(diǎn)之間通信的端口吨述。

# elasticsearch.yml中增加

http.host: 0.0.0.0
transport.host: 192,168.1.23
# transport.host填寫節(jié)點(diǎn)的實(shí)際萬(wàn)兆ip岩睁,http.host固定0.0.0.0,也可修改為指定ip

ES系列參考

ES集群red狀態(tài)排查與恢復(fù)

ElasticSearch重要概念和常用操作

ES線程池設(shè)置

線程池-ES-官方文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揣云,一起剝皮案震驚了整個(gè)濱河市捕儒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌邓夕,老刑警劉巖刘莹,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異翎迁,居然都是意外死亡栋猖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門汪榔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蒲拉,“玉大人,你說(shuō)我怎么就攤上這事痴腌〈仆牛” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵士聪,是天一觀的道長(zhǎng)锦援。 經(jīng)常有香客問(wèn)我,道長(zhǎng)剥悟,這世上最難降的妖魔是什么灵寺? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮区岗,結(jié)果婚禮上略板,老公的妹妹穿的比我還像新娘。我一直安慰自己慈缔,他們只是感情好叮称,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著藐鹤,像睡著了一般瓤檐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上娱节,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天挠蛉,我揣著相機(jī)與錄音,去河邊找鬼肄满。 笑死碌秸,一個(gè)胖子當(dāng)著我的面吹牛绍移,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讥电,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蹂窖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恩敌?” 一聲冷哼從身側(cè)響起瞬测,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纠炮,沒想到半個(gè)月后月趟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡恢口,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年孝宗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耕肩。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡因妇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猿诸,到底是詐尸還是另有隱情婚被,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布梳虽,位于F島的核電站址芯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏窜觉。R本人自食惡果不足惜谷炸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望禀挫。 院中可真熱鬧旬陡,春花似錦、人聲如沸特咆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腻格。三九已至,卻和暖如春啥繁,著一層夾襖步出監(jiān)牢的瞬間菜职,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工旗闽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酬核,地道東北人蜜另。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嫡意,于是被迫代替她去往敵國(guó)和親举瑰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容