腾讯云elasticsearch产品优化指南
- 2019 年 10 月 4 日
- 筆記
一、首先是建议做软优化(分片设置等)
- 首先先确认自己的集群是不是1c2G的测试版本配置,如果是,那么要清楚:1c2g 不能用于生产,这个配置只能用于测试测试,弄点小数据量数据玩一玩;
- 对于日志这种类似场景, 如果使用ES的默认配置(5个分片), 并且使用 Logstash 按天生成索引, 那么 6 个月下来, 拥有的分片数将达到 890 个. 再多的话, ES集群将难以工作,因此日志场景千万不要用默认的设置;
- 因此,日志场景建议分片大小控制在30G/个,分片的数量建议跟集群节点数的一样或者是倍数,数量设置参考例子:假设es集群有 5 个节点,Index数据量当前大小为 150GB,预期半年后增长 50%。单分片大小控制为 30GB,则大约需要 150GB * (1 + 50%) / 30 ≈ 7个分片,因为是5个节点,这里多出7-5=2个分片会落在5个节点的任意两个上,这两个会多出一些负载,造成数据热点,节点间压力会相对不均匀。因此,分片数量为节点数的倍数,这里调成10个,这样就平均了;
- 所以总结计算公式为: 当前index数据量总大小 * (1 + 数据预期增长比率)/ 30G(单个分片控制的大小,这个是固定的,最优是30G)
- 同时日志场景index的数量建议按周或者按月来创建(按天和小时很容易造成索引数变多)
- 日志数据如果不重要,副本可以不设置或者设置成1即可(number_of_replicas(副本设置)为 1);
- 如果预算可以,数据量后期也会很多,强烈建议在现有节点上做下横向扩容,增加节点数(这样会大大增加性能)
- 定期自动化删除过期不必要的索引,根据业务情况删除时间很久之前不用的索引,可以参考这个文章:https://cloud.tencent.com/developer/article/1361207
二、其他外部优化文章参考
另:es最佳实践文档:https://cloud.tencent.com/document/product/845/19551 es监控指标介绍文档:https://cloud.tencent.com/document/product/845/16995 es告警设置建议:https://cloud.tencent.com/document/product/845/35572 es默认模版调整方法:https://cloud.tencent.com/document/product/845/35548 es性能压测数据:https://cloud.tencent.com/document/product/845/19535
es产品横向扩容介绍:
- 概念:向集群中添加更多节点;
- 内部实现流程:扩容时会先把申请空节点并启动,节点会根据配置发现集群并加入,此时扩容操作已经算作成功。ES会自动在集群内部做数据均衡,不需要人工干预。
- 优劣:快速,对业务几乎无影响。但过多小配置的节点集群性能不佳。
下面两篇外部文章也可以推荐给看看: 《图解 Elasticsearch 入门原理》 https://mp.weixin.qq.com/s?__biz=MzUzMTA2NTU2Ng==&mid=2247485771&idx=1&sn=b57cb931376def575497ed0963c564ea&chksm=fa4976facd3effec9b6048566803657f214a31949b5fa94a67b04597d33ab2813ef041e57fc0&mpshare=1&scene=1&srcid=120577nwydfyiyQYCD0ihkuR&sharer_sharetime=1565076443617&sharer_shareid=e5e1cc74ca9c3dbd757efde7fd8ad8c0&rd2werd=1#wechat_redirect
另外,腾讯云es团队的干货系列文章也可以关注下,里面很多关于es优化和特点的介绍: https://cloud.tencent.com/developer/column/4008