您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Reindex性能優(yōu)化方法是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
5.X版本后新增Reindex。Reindex可以直接在Elasticsearch集群里面對(duì)數(shù)據(jù)進(jìn)行重建,如果你的mapping因?yàn)樾薷亩枰亟?,又或者索引設(shè)置修改需要重建的時(shí)候,借助Reindex可以很方便的異步進(jìn)行重建,并且支持跨集群間的數(shù)據(jù)遷移。
reindex的核心做跨索引、跨集群的數(shù)據(jù)遷移。 慢的原因及優(yōu)化思路無(wú)非包括:
batch size值可能太小(默認(rèn)是1000)
reindex的底層是scroll實(shí)現(xiàn),借助scroll并行優(yōu)化方式,提升效率
跨索引、跨集群的核心是寫(xiě)入數(shù)據(jù),考慮寫(xiě)入優(yōu)化角度提升效率
默認(rèn)情況下,_reindex使用1000進(jìn)行批量操作,您可以在source中調(diào)整batch_size。
POST _reindex { "source": { "index": "source", "size": 5000 }, "dest": { "index": "dest", "routing": "=cat" } } 批量大小設(shè)置的依據(jù): 使用批量索引請(qǐng)求以獲得最佳性能。 批量大小取決于數(shù)據(jù)、分析和集群配置,但一個(gè)好的起點(diǎn)是每批處理5-15 MB。 注意:這是物理大小。文檔數(shù)量不是度量批量大小的好指標(biāo)。例如,如果每批索引1000個(gè)文檔,: 1)每個(gè)1kb的1000個(gè)文檔是1mb。 2)每個(gè)100kb的1000個(gè)文檔是100 MB。 這些是完全不同的體積大小。逐步遞增文檔容量大小的方式調(diào)優(yōu)。 從大約5-15 MB的大容量開(kāi)始,慢慢增加,直到你看不到性能的提升。然后開(kāi)始增加批量寫(xiě)入的并發(fā)性(多線程等等)。 使用kibana、cerebro或iostat、top和ps等工具監(jiān)視節(jié)點(diǎn),以查看資源何時(shí)開(kāi)始出現(xiàn)瓶頸。如果您開(kāi)始接收EsRejectedExecutionException,您的集群就不能再跟上了:至少有一個(gè)資源達(dá)到了容量。要么減少并發(fā)性,或者提供更多有限的資源(例如從機(jī)械硬盤(pán)切換到ssd固態(tài)硬盤(pán)),要么添加更多節(jié)點(diǎn)。
如果要進(jìn)行大量批量導(dǎo)入,請(qǐng)考慮通過(guò)設(shè)置index.number_of_replicas來(lái)禁用副本:0。
主要原因在于:復(fù)制文檔時(shí),將整個(gè)文檔發(fā)送到副本節(jié)點(diǎn),并逐字重復(fù)索引過(guò)程。 這意味著每個(gè)副本都將執(zhí)行分析,索引和潛在合并過(guò)程。 相反,如果您使用零副本進(jìn)行索引,然后在提取完成時(shí)啟用副本,則恢復(fù)過(guò)程本質(zhì)上是逐字節(jié)的網(wǎng)絡(luò)傳輸。 這比復(fù)制索引過(guò)程更有效。
PUT /my_logs/_settings { "number_of_replicas": 0 } 如: PUT /regroupmembers-20.11.12-151612/_settings { "number_of_replicas": 0 } 說(shuō)明:92萬(wàn)數(shù)據(jù)測(cè)試環(huán)境正常需要85分鐘,去掉副本分片之后需要30分鐘
Reindex支持Sliced Scroll以并行化重建索引過(guò)程。 這種并行化可以提高效率,并提供一種方便的方法將請(qǐng)求分解為更小的部分。
sliced原理(from medcl)
用過(guò)Scroll接口吧,很慢?如果你數(shù)據(jù)量很大,用Scroll遍歷數(shù)據(jù)那確實(shí)是接受不了,現(xiàn)在Scroll接口可以并發(fā)來(lái)進(jìn)行數(shù)據(jù)遍歷了。
每個(gè)Scroll請(qǐng)求,可以分成多個(gè)Slice請(qǐng)求,可以理解為切片,各Slice獨(dú)立并行,利用Scroll重建或者遍歷要快很多倍。
slicing使用舉例
slicing的設(shè)定分為兩種方式:手動(dòng)設(shè)置分片、自動(dòng)設(shè)置分片。
手動(dòng)設(shè)置分片參見(jiàn)官網(wǎng)
自動(dòng)設(shè)置分片如下:
POST _reindex?slices=5&refresh { "source": { "index": "twitter" }, "dest": { "index": "new_twitter" } } slices大小設(shè)置注意事項(xiàng): 1)slices大小的設(shè)置可以手動(dòng)指定,或者設(shè)置slices設(shè)置為auto,auto的含義是:針對(duì)單索引,slices大小=分片數(shù);針對(duì)多索引,slices=分片的最小值。 2)當(dāng)slices的數(shù)量等于索引中的分片數(shù)量時(shí),查詢性能最高效。slices大小大于分片數(shù),非但不會(huì)提升效率,反而會(huì)增加開(kāi)銷。 3)如果這個(gè)slices數(shù)字很大(例如500),建議選擇一個(gè)較低的數(shù)字,因?yàn)檫^(guò)大的slices 會(huì)影響性能。
如果你的搜索結(jié)果不需要接近實(shí)時(shí)的準(zhǔn)確性,考慮先不要急于索引刷新refresh。默認(rèn)值是1s,在做reindex時(shí)可以將每個(gè)索引的refresh_interval到30s或禁用(-1)。
如果正在進(jìn)行大量數(shù)據(jù)導(dǎo)入,reindex就是此場(chǎng)景,先將此值設(shè)置為-1來(lái)禁用刷新。完成后再重置回需要的值!
設(shè)置方法: PUT /index_name/_settings { "refresh_interval": -1 } 還原方法: PUT /index_name/_settings { "refresh_interval": "30s" }
索引數(shù)據(jù)量:71460992
持續(xù)時(shí)間:55分鐘
1.設(shè)置Refresh: PUT /regroupmembers-20.11.23-000000/_settings { "refresh_interval": "30s" } 2.設(shè)置Batch_size: POST _reindex { "source": { "index": "regroupmembers-20.05.28-142940", "size": 4000 }, "dest": { "index": "regroupmembers-20.11.23-000000" } } 3.設(shè)置副本分片:0
“Reindex性能優(yōu)化方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。