V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aoxg2019
V2EX  ›  Java

redission 客户端 pod,cpu100%.心跳检测中,出现了 RedisTimeOutException 后,就会导致 CPU 跳升 25%,大概两个小时跳一次,4 此后就到 100%了

  •  
  •   aoxg2019 · 2 天前 · 1340 次点击
    如下图,很有规律,不知道因为什么原因莫名的导致 cpu 暴涨,但是其他机房的 pod,或者说同机房的 pod 却一切正常,应用内只有一个分布式锁的应用,有应用到 leaseTime,应该时没有 watchDog 的,redission 的后台检车线程猜测来看只有心跳检测.不明白的心跳失败后为何 cpu 的暴涨如此有规律.还望有大佬解答.
    18 条回复    2025-03-18 11:56:04 +08:00
    oneisall8955
        1
    oneisall8955  
       2 天前
    4 个核,每次一个核心跑满?
    aoxg2019
        2
    aoxg2019  
    OP
       2 天前 via Android
    @oneisall8955 确实是 4 个 c.不太明白为啥心跳线程失败后会导致 cpu 被用完
    fj19
        3
    fj19  
       2 天前
    有定时任务吧
    LiaoMatt
        4
    LiaoMatt  
       2 天前
    会不会是用 while true 来拿分布式锁了
    oneisall8955
        5
    oneisall8955  
       2 天前
    @aoxg2019 #2 考虑某个线程 while true 或者扫描全量 keys 或 scan 模糊查询之类的
    aoxg2019
        6
    aoxg2019  
    OP
       2 天前 via Android
    @fj19 定时任务应用层面没有,redisson 有心跳任务
    aoxg2019
        7
    aoxg2019  
    OP
       2 天前 via Android
    @LiaoMatt @oneisall8955 用的 lock.tryLock(0,3,second)这个方式去抢锁。整个应用就这么这个地方用到了 redisson 客户端,其他地方没有用 redis 的
    litchinn
        8
    litchinn  
       2 天前
    跑个火焰图,用 arthas 查看下线程情况,观察下 GC 情况
    hwdq0012
        9
    hwdq0012  
       2 天前
    pod 是指 kubernetes 的 pod 吗,如果是不是可以进入 Pod 的 shell 吗,在里面用 gdb 分析一下
    cccb
        10
    cccb  
       2 天前
    哥你名字和 ip 全漏了
    listen2wind
        11
    listen2wind  
       2 天前
    @cccb 看名字应该是个姐
    oneisall8955
        12
    oneisall8955  
       2 天前
    @listen2wind 敏字,哥姐都能用吧
    aoxg2019
        13
    aoxg2019  
    OP
       2 天前 via Android
    @litchinn 线上不允许用这些检测工具
    aoxg2019
        14
    aoxg2019  
    OP
       2 天前 via Android
    @hwdq0012 pod 已经呗 kill 了
    oneisall8955
        15
    oneisall8955  
       2 天前
    额,原来是客户端,java 的 pod 100% 呀,那本地复现下,线程 dump ,看线程状态,或许是下面的原因:

    https://github.com/redisson/redisson/issues/6153

    https://www.cnblogs.com/macho8080/p/18628542
    zhady009
        16
    zhady009  
       2 天前
    先看其他环境能不能复现好做验证和收集额外运行时的信息,然后需要确定是哪个线程搞鬼,用 JFR 去记录然后 dump 一下,如果是 Redisson 的问题不想动脑子就先升级版本试试
    conn457567
        17
    conn457567  
       2 天前 via Android
    这个问题在我们生产环境快一年了。。升级到 resission 最新版本试试,他们上上周出了一个新版本解决这个问题
    Richared
        18
    Richared  
       1 天前   ❤️ 1
    看其他环境能不能复现吧,能复现问题就能解决一大半。生产有些工具你都用不了,只能猜,太影响排查了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:23 · PVG 00:23 · LAX 09:23 · JFK 12:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.