2.2版本的es,集群四个节点,每个节点都是8核32G 2T磁盘。
日志四个分片 没有副本,每个机器一个分片。日志量高峰阶段每小时9000W条,合50-60G,批量每次写大概5M左右,写速度很慢每次批量大概8-10s,每个节点的load也挺高的,不过这也能理解毕竟写的量比较大。
做过优化配置,索引的配置信息如下:
机器写入时的IO状况:
htop:
感觉 基本的优化都做了,translog的处理策略,还有flush的策略,refresh也禁用了。但是批量写的速度感觉还是很慢,导致上游kafka一到高峰期堆积就比较多。
不知道还有什么好办法能优化的
日志四个分片 没有副本,每个机器一个分片。日志量高峰阶段每小时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状况:
htop:
感觉 基本的优化都做了,translog的处理策略,还有flush的策略,refresh也禁用了。但是批量写的速度感觉还是很慢,导致上游kafka一到高峰期堆积就比较多。
不知道还有什么好办法能优化的
3 个回复
code4j - coder github: https://github.com/rpgmakervx
赞同来自:
kennywu76 - Wood
赞同来自:
因为最近看到官方某个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
赞同来自: