故障现象:
Flink写入es进程全部停止,重启进程后报错:连接es超时
查看es状态正常,检查es节点发现有一个节点进程挂了,重启es节点,集群状态异常,节点报错如下:
failed to execute bulk item (index) index {[logfmt_705_2022121507][_doc][0MhzFIUB0tZrCg7rDUyF], source[n/a, actual length: [2kb], max length: 2kb]}
报错分析:
es无法在默认时间内处理完任务,es的segment合并是一个很是耗时的操做。
批量处理的超时时间默认设置为30s。
常见引起超时的原因:
- 分片数过多,单节点的分片数不要超过1000个;
- 写入数据时自动建立索引;
- 大批量写入数据refresh时间间隔过短;
- 索引的字段数量太多
根据现场情况分析,因需求每小时会创建多个索引,因此使用的是自动建立索引,猜测可能为异常节点积压的创建索引任务,重启后导致es集群状态异常。
查看pending的任务,发现积压很多任务,其中存在大量索引创建任务。
curl -u elastic:password 127.0.0.0:9200/_cat/pending_tasks?v
查看积压的索引为过期索引,直接在es内批量删除索引,节点恢复正常,查看无积压任务。