共计 604 个字符,预计需要花费 2 分钟才能阅读完成。
背景
经过在生产环境的大规模使用之后发现如果使用 Elasticsearch 6.x 的一些默认配置的话,尤其是 number_of_shards 默认为 5,如果索引按照天生成,日积月累到几万后,集群就会频繁 GC,最终导致 ES 的某些 REST 接口不可用。
最新的 ES 7.x 已经将 number_of_shards 默认为 1 了,所以如果你们的生产环境如果全面升级到了 7.x 的话则可以忽略本篇博客,但是如果因为各种原因你们的 es 集群还在使用 6.x 的话,那么就要做一些优化了。
优化
我们打开 Kibana 的面板后,来到 Management-> Dev Tools, 然后执行下面的 PUT 请求,
PUT /_template/xxlog
{
"order": 1,
"version": 1,
"index_patterns": ["xx-*"],
"settings": {
"index": {
"number_of_shards": "1",
"number_of_replicas": "1"
}
},
"mappings": {},
"aliases": {}}
上面的 xxlog 为该 template 的名字,你可以根据你们的业务需求自定义一个,"xx-*" 这个也很重要,你们索引的前缀 prefix,这个也要根据实际情况做一些改动。
上面的关键是 "number_of_shards": "1" 这一行,因为对于 number_of_replicas 来说,不管是 6.x 还是 7.x 都已经默认为 1 了。
正文完
发表至: ELK运维
2021-02-28