故障表现
查询日志的时候频繁报错503,报错信息:48个分片有11个失败,您正在查看的数据可能不完整或有错误。
原因分析
从报错信息看,是找不到索引对应的分片,考虑是节点故障或者数据丢失,检查各个节点的状态,磁盘容量富余,CPU占比正常,内存告急(大约90%)。查看集群的健康状况,节点数4个是正常的,但是存在2486个分片是已定义但是未分配的,我们查询索引只能找到85%左右的分片,所以这是查询日志报错的原因。判断集群已经处于不良状态很久了,当查询到的分片恰好属于那15%未分配状态的分片中时,就会报错。
解决方案
最简单的方式是添加节点,其次是减轻分片的查询压力(减少索引存储的生命周期),费力一点是做性能优化。
为了验证猜想,我把索引生命周期从15天减少到7天,保存配置,大概10分钟之后,集群状态恢复正常。
后续计划
再观察一下使用情况吧,如果有长时间存储索引的需求,就需要提高集群的性能瓶颈,再把配置改回来,集群应该还有优化的空间,但是我之前没有这方面生产环境的优化经验,后面我再探究一下。