ElasticSearch - 批量更新bulk死锁问题排查
原文中文,约10600字,阅读约需26分钟。发表于: 。一、问题系统介绍监听商品变更MQ消息,查询商品最新的信息,调用BulkProcessor批量更新ES集群中的商品字段信息;由于商品数据非常多,所以将商品数据存储到ES集群上,整个ES集群共划分了256个分片,并根据商品的三级类目ID进行分片路由。比如一个SKU的商品名称发生变化,我们就会收到这个SKU的变更MQ消息,然后再去查询商品接口,将商品的最新名称查询回来,再根据这个SKU的三级分类ID进行...
该文介绍了一个问题系统,该系统监听商品变更MQ消息并使用BulkProcessor更新ES集群中的商品字段信息。然而,在618大促期间,由于商品变更MQ消息频繁,导致MQ消息积压,消费速度跟不上生产速度。通过线程堆栈分析发现,所有业务线程都在等待一个ES客户端内部线程释放BulkProcessor对象锁,但该线程一直未释放锁,导致业务线程死锁。问题的解决方案是升级ES客户端版本到7.6正式版或取消重试逻辑。