aoxg2019
V2EX  ›  Java

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

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

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

    https://www.cnblogs.com/macho8080/p/18628542
    zhady009
        16
    zhady009  
       Mar 17, 2025
    先看其他环境能不能复现好做验证和收集额外运行时的信息,然后需要确定是哪个线程搞鬼,用 JFR 去记录然后 dump 一下,如果是 Redisson 的问题不想动脑子就先升级版本试试
    conn457567
        17
    conn457567  
       Mar 17, 2025 via Android
    这个问题在我们生产环境快一年了。。升级到 resission 最新版本试试,他们上上周出了一个新版本解决这个问题
    Cruzz
        18
    Cruzz  
       Mar 18, 2025   ❤️ 1
    看其他环境能不能复现吧,能复现问题就能解决一大半。生产有些工具你都用不了,只能猜,太影响排查了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3503 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 05:02 · PVG 13:02 · LAX 22:02 · JFK 01:02
    ♥ Do have faith in what you're doing.