头条创作挑战赛 运行一段时间后cpu占用99 访问系统白屏假死很长时间才响应 jvm参数设置不合理:eden区占用较高metaspace较小优化jvm参数 gclog显示eden区大小不够优化jvm参数 jvm参数优化后堆内存无压力: jvm参数优化后堆内存无压力 metadata区满了:不够用增大meta区大小 XX:MetaspaceSize512MXX:MaxMetaspaceSize1024M metaspace占用 优化jvm参数后(运行一段时间后cpu占用还是飙升到99)且系统负载较高 排查cpu飙升过程:vmstat14 pidstatp866ut13查找占用cpu较高线程id2109 printfx210983d问题线程nid:0x83d 打印线程堆栈信息:发现死锁问题 jstackFl2109homeworkzhibijstack210983d。txtThread2109:(stateINNATIVE)cpu98发现有死锁 redis连接资源获取死锁问题 问题定位原因为:获取redis资源死锁问题修复即可。 定位死锁稳定代码行: 定位死锁问题代码行 问题行加锁并发竞争激烈时会BOLCKED线程执行 线程由于获取jedis连接而被BLOCKED阻塞,列举几个问题线程堆栈如下:【实际Redis是单线程操作无需加锁,小伙伴获取jedis连接写法有问题】 锁定jedis代码行 现成堆栈显示有多个接口被jedis获取锁阻塞,以下皆为等待jedis释放锁状态被BLOCKED的线程问题代码行 1。获取设备接口 2。心跳接口 3。物料接口