一次线上JVM问题的排查——一把无人持有的锁

记一次闲鱼线上问题的排查——一把无人持有的

1 背景

近期,闲鱼核心应用出现了一个比较难解决的问题。在该应用集中,会随机偶现一两个实例,其JVM运行在一个挂起的状态,深入分析stack文件发现,此时jvm中有大量的线程在等待一把没有任何线程持有的锁。问题实例所在的机器负载相对Q v I D A C T 8 %正常机器要轻很多,而其线程数则大幅增多。由于该问题在逻辑上的冲突,加上周边问题的复杂性,使得研究、分析、解决该问题变得相对来说困难与曲折。本文将系统性地介绍如何解决这个问题,并找出问题背后的原因。

2 问题分析

在实际解决这个V e b 4问题的时候,我们发现不仅问题本身显得不合常理,其周边环境也相对来说不友善,给问题的分析与解决带来了较大的困难。

  • 集群中随机出现。问题随机出现在该应用集? 5 G s群中的一个或几个实例中,无法提前预知其出现规律。
  • 单机出现时间p _ s T可预知,现场捕捉困难,捕捉风险大