《Elastic Stack 实战手册》——四、应用实践——4.3 性能优化场景——4.3.1.Elasticsearch 生产环境集群部署最佳实践(1) https://developer.aliyun.com/article/1225322?spm=a2c6h.13148508.setting.14.47564f0eVi9cik
节点角色划分
Elasticsearch 节点核心可分为三类:主节点、数据节点、协调节点。
主节点
主节点:如果主节点是仅是候选主节点,不含数据节点角色,则它配置要求没有那么高,因为
它不存储任何索引数据。
如前所述,如果分片非常多,建议主节点要提高硬件配置。
主节点职责:存储集群状态信息、分片分配管理等。
同时注意,Elasticsearch 应该有多个候选主节点,以避免脑裂问题。
数据节点
数据节点职责:CURD、搜索以及聚合相关的操作。
这些操作一般都是 IO、内存、CPU 密集型。
协调节点
协调节点职责:类似负载平衡器,主要工作是将搜索任务分发到相关的数据节点,并收集所有
结果,然后再将它们汇总并返回给客户端应用程序。
节点配置参考
下表参见官方博客 PPT:
不同节点角色配置如下
必须配置到:elasticsearch.yml 中。
· 主节点
node.master: true
node.data: false
· 数据节点
node.master: false
node.data: true
· 协调节点
node.master: false
node.data: false
故障排除提示
Elasticsearch 的性能在很大程度上取决于宿主机资源情况。CPU、内存使用率和磁盘 IO 是每
个 Elasticsearch 节点的基本指标。建议你在 CPU 使用率激增时查看 Java 虚拟机(JVM)指标。
堆内存使用率高
高堆内存使用率压力以两种方式影响集群性能:
堆内存压力上升到 75% 及更高
· 剩余可用内存更少,并且集群现在还需要花费一些 CPU 资源以通过垃圾回收来回收内存。
· 在启用垃圾收集时,这些 CPU 周期不可用于处理用户请求。结果,随着系统变得越来越受
资源约束,用户请求的响应时间增加。
堆内存压力继续上升并达到接近 100%
· 将使用更具侵略性的垃圾收集形式,这将反过来极大地影响集群响应时间。
· 索引响应时间度量标准表明,高堆内存压力会严重影响性能。
非堆内存使用率增长
JVM 外非堆内存的增长,吞噬了用于页面缓存的内存,并可能导致内核级 OOM。
监控磁盘 IO
由于 Elasticsearch 大量使用存储设备,磁盘 IO 的监视是所有其他优化的基础,发现磁盘 IO
问题并对相关业务操作做调整可以避免潜在的问题。
应根据引起磁盘 IO 的情况评估对策,常见优化磁盘 IO 实战策略如下:
· 优化分片数量及其大小
· 段合并策略优化
· 更换普通磁盘为 SSD 磁盘
· 添加更多节点
《Elastic Stack 实战手册》——四、应用实践——4.3 性能优化场景——4.3.1.Elasticsearch 生产环境集群部署最佳实践(3) https://developer.aliyun.com/article/1225319?spm=a2c6h.13148508.setting.16.47564f0eVi9cik