记:zookeeper集群抖动造成solrcloud集群故障

一、故障描述

2020-04-18 23:10

solrcloud集群报警,大量节点线程数>10000,读写慢请求非常多,搜索业务接口大量超时。

二、紧急处理&故障追踪

紧急处理:

线程数居高不下,判断无法自愈,果断采取紧急节点重启方案,快速恢复服务。

故障追踪:

1、猜测是读写请求慢,导致线程池大量创建线程,第一步需要jstack栈数据分析

v2-a3b5ddc23e12f14c085740aad4909b01_b.jpg
4000+线程节点jstack解析图

solr使用jetty线程池

v2-9912e1ebb82b318395edbf2ec859ef57_b.png

v2-a501c8256db312d422d17a1a8dcdefa3_b.jpg
jetty线程池

v2-b92abc7c0773ad202c1576dfd9cbab12_b.jpg
jettySolrRunner使用QueueThreadPool

2、查看solr节点故障时间点的日志

solr大量实时写入报错,伴随大量zookeeper方面的报错

v2-a6dd814aef34737bbdc61d806a6bd207_b.jpg

v2-d71f126123ceace3d203b992cae1fd89_b.jpg

查看当时zookeeper集群监控,存在网卡异常峰值,且日志上有大量集体session断开

v2-6427dd60fa53fed65a170418e2a19ba1_b.png

v2-4b5dceb4ecbb194876460c7348fc1952_b.jpg

3、查看zookeeper和solr session超时设置

  1. 当前-DzkClientTimeout=15000
  2. solr源码默认值是45000

v2-c2e37aa096a83af73f957bd70f478765_b.jpg

三、故障分析

总结轨迹

solr日志可以看到,先是zookeeper断开,update程序找不到leader报错,然后写入报错,读越来越慢。

分析

zookeeper网路抖动,造成solr和zookeeper session断开,solr update ZkStateReader误判leader找不到,重试,进而大量写超时。写和读都是通过jetty的QueueThreadPool,导致读慢,读写慢导致线程激增到10000+。

四、解决

  1. 排查zookeeper网络抖动原因(需要运维部门协作)
  2. 加大solr和zk的连接超时时间,使用默认的:-DzkClientTimeout=45000【1未做情况下,修改配置后至今稳定运行】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值