第11章:故障诊断与处理
11.1 常见故障类型与原因
集群级故障
| 故障类型 | 症状 | 常见原因 |
|---|---|---|
| 集群Red | 存在未分配的主分片 | 节点故障、磁盘满、分片损坏 |
| 集群Yellow | 存在未分配的副本分片 | 节点不足、磁盘满、副本数过多 |
| 集群脑裂 | 多个Master节点 | 网络分区、Master配置错误 |
| 集群无响应 | 无法连接集群 | 网络故障、ES进程挂掉、防火墙 |
节点级故障
| 故障类型 | 症状 | 常见原因 |
|---|---|---|
| 节点OOM | 节点崩溃,OOM错误 | 堆内存不足、查询内存消耗大 |
| 节点CPU高 | CPU使用率>90% | 查询复杂、聚合计算大、GC频繁 |
| 节点磁盘满 | 磁盘使用率>95% | 数据增长快、未配置ILM |
| 节点离线 | 节点状态离线 | 网络故障、进程挂掉、硬件故障 |
性能故障
| 故障类型 | 症状 | 常见原因 |
|---|---|---|
| 查询慢 | 查询延迟>500ms | 查询复杂、索引设计不合理、资源不足 |
| 写入慢 | 写入延迟>100ms | 刷新间隔小、副本同步慢、资源不足 |
| 聚合慢 | 聚合延迟>2s | 聚合桶数多、未预计算、资源不足 |
| GC频繁 | GC频率>10次/秒 | 堆内存不足、查询内存消耗大 |
11.2 故障诊断工具链
集群状态检查
查看集群健康状态:
GET_cluster/health查看节点状态:
GET_cat/nodes?v查看分片状态:
GET_cat/shards?v&h=index,shard,prirep,state,docs,store,node查看未分配分片原因:
GET_cluster/allocation/explain日志分析
查看ES日志:
tail-f/var/log/elasticsearch/my-cluster.log查看GC日志:
tail-f/var/log/elasticsearch/gc.log查看慢查询日志:
# 配置慢查询日志PUT/my_index/_settings{"index.search.slowlog.threshold.query.warn":"10s","index.search.slowlog.threshold.query.info":"5s","index.indexing.slowlog.threshold.index.warn":"10s"}