亲,只收二进制

es 日志集群,写速度慢

Elasticsearch | 作者 code4j | 发布于2018年03月20日 | 阅读数:5041

2.2版本的es,集群四个节点,每个节点都是8核32G 2T磁盘。
 
日志四个分片 没有副本,每个机器一个分片。日志量高峰阶段每小时9000W条,合50-60G,批量每次写大概5M左右,写速度很慢每次批量大概8-10s,每个节点的load也挺高的,不过这也能理解毕竟写的量比较大。
 
做过优化配置,索引的配置信息如下:
"index": {
"creation_date": "1521500400855",
"number_of_replicas": "0",
"translog": {
"flush_threshold_ops": "10000000",
"flush_threshold_size": "5120m",
"flush_threshold_period": "30m",
"index": {
"translog": {
"durability": "async",
"sync_interval": "30s"
},
"merge": {
"policy": {
"max_merged_segment": "1g",
"segments_per_tier": "20"
}
}
}
},
"search": {
"slowlog": {
"threshold": {
"fetch": {
"warn": "1s"
},
"query": {
"warn": "3s"
}
}
}
},
"indexing": {
"slowlog": {
"threshold": {
"index": {
"warn": "500ms"
}
}
}
},
"uuid": "FfvDBOmaSxiop13U6laHTQ",
"number_of_shards": "4",
"refresh_interval": "-1",
"version": {
"created": "2020099"
}
}

机器写入时的IO状况:

1055A0E0-03B6-4daa-8E85-0E2B3E91BB65.png

 
 
htop:
 

45E2C374-1A17-45ca-BDC6-C05D3F10D0B0.png

 
 
感觉 基本的优化都做了,translog的处理策略,还有flush的策略,refresh也禁用了。但是批量写的速度感觉还是很慢,导致上游kafka一到高峰期堆积就比较多。
 
不知道还有什么好办法能优化的
 
已邀请:

code4j - coder github: https://github.com/rpgmakervx

赞同来自:

看了下策略 translog 5G flush 一次 30分钟 3G左右,所以平均3.5G translog清理一次。

kennywu76 - Wood

赞同来自:

磁盘IO看起来并不高,索引的配置基本没有什么可以优化的地方,除了下面这个设置,可能会导致写入的性能问题:


"refresh_interval": "-1"


 
因为最近看到官方某个release note提到,早期版本如果完全禁用了refresh,可能会导致version map变得很大,GC压力上升,从而开始reject bulk请求,降低写入吞吐量。
 
Github上相关的issue: 
https://github.com/elastic/ela ... 20498
https://github.com/elastic/ela ... 27516 
 
对应的修复: https://github.com/elastic/ela ... 27534
 
你可以试一下将refresh interval设置为30s,对比看下写入吞吐量是否会有提高。

famoss

赞同来自:

可以看下查询队列的情况。

要回复问题请先登录注册