南海網(wǎng)站建設(shè)公司蘇州網(wǎng)站優(yōu)化排名推廣
文章目錄
- Elasticsearch作為日志存儲(chǔ)時(shí)的優(yōu)化
- 優(yōu)化ES索引設(shè)置
- 優(yōu)化線程池配置
- 鎖定內(nèi)存,不讓JVM使用Swap
- 減少分片數(shù)、副本數(shù)
Elasticsearch作為日志存儲(chǔ)時(shí)的優(yōu)化
linux內(nèi)核優(yōu)化、JVM優(yōu)化、ES配置優(yōu)化、架構(gòu)優(yōu)化(filebeat/fluentd代替logstash、加入kafka做消息隊(duì)列)
優(yōu)化ES索引設(shè)置
(1)優(yōu)化fsync
- 背景:Elasticsearch為保證數(shù)據(jù)不丟失,會(huì)在每次寫請(qǐng)求完成后觸發(fā)fsync將translog中的segment刷到磁盤。這提高了數(shù)據(jù)安全性,但可能影響性能。
- 優(yōu)化建議:如果允許部分?jǐn)?shù)據(jù)丟失以提高效率,可以設(shè)置異步刷新translog,并調(diào)整相關(guān)參數(shù)。
"index.translog.durability": "async"
:設(shè)置為異步刷新。"index.translog.flush_threshold_size":"1024mb"
:增大translog刷新閾值。"index.translog.sync_interval": "120s"
:延長(zhǎng)translog同步間隔。
(2)優(yōu)化refresh
- 背景:Elasticsearch通過(guò)refresh過(guò)程將內(nèi)存中的數(shù)據(jù)轉(zhuǎn)換成Lucene的完整segment,以便被搜索。默認(rèn)1秒后數(shù)據(jù)可查詢,但會(huì)產(chǎn)生大量segment,影響檢索性能。
- 優(yōu)化建議:對(duì)于日志搜索,可以適當(dāng)增大refresh間隔。
"index.refresh_interval":"5s"
或更長(zhǎng),根據(jù)實(shí)際需求設(shè)置。
(3)優(yōu)化merge
- 背景:merge操作會(huì)合并segment,優(yōu)化索引結(jié)構(gòu)。但并發(fā)merge可能占用過(guò)多資源,影響集群性能。
- 優(yōu)化建議:控制并發(fā)的merge線程數(shù),根據(jù)存儲(chǔ)類型和CPU核數(shù)調(diào)整。
"index.merge.scheduler.max_thread_count":"1"
:對(duì)于普通磁盤,設(shè)置為1以減少IO堵塞。
(4)實(shí)施優(yōu)化
- 需要先關(guān)閉索引,修改設(shè)置后再打開(kāi)。
- 使用curl命令進(jìn)行索引的關(guān)閉、設(shè)置修改和打開(kāi)操作。
優(yōu)化線程池配置
- 背景:write線程池滿負(fù)荷時(shí)可能導(dǎo)致數(shù)據(jù)寫入拒絕。
- 優(yōu)化建議:
- 將線程數(shù)改為CPU總核數(shù)加1。
- 增大隊(duì)列容量以緩沖任務(wù),但避免過(guò)大導(dǎo)致堆內(nèi)存占用過(guò)多。
- 在
elasticsearch.yml
文件中修改write線程池配置。
鎖定內(nèi)存,不讓JVM使用Swap
- 背景:Swap交換分區(qū)對(duì)性能和節(jié)點(diǎn)穩(wěn)定性不利,會(huì)導(dǎo)致垃圾回收時(shí)間延長(zhǎng)和節(jié)點(diǎn)響應(yīng)緩慢。
- 優(yōu)化建議:
- 臨時(shí)禁用Swap內(nèi)存(重啟后失效)。
- 永久減少Swap的使用(通過(guò)修改
/etc/sysctl.conf
文件)。 - 在
elasticsearch.yml
文件中啟用bootstrap.memory_lock
,鎖定內(nèi)存不讓JVM寫入Swap。
減少分片數(shù)、副本數(shù)
- 分片:
- 背景:分片過(guò)小可能導(dǎo)致開(kāi)銷增加,分片過(guò)大可能導(dǎo)致頻繁Merge和大量IO操作。
- 優(yōu)化建議:根據(jù)索引大小調(diào)整分片數(shù),如15G以下的索引調(diào)整為3個(gè)分片。
- 副本數(shù):
- 背景:過(guò)多副本會(huì)導(dǎo)致ES內(nèi)部寫擴(kuò)大,影響寫入性能。
- 優(yōu)化建議:對(duì)于日志數(shù)據(jù),設(shè)置1個(gè)副本即可。對(duì)于大數(shù)據(jù)量的索引,可以設(shè)置副本數(shù)為0以減少對(duì)性能的影響。