V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
pumpkins
V2EX  ›  问与答

正常业务流量需求进行预热操作嘛

  •  
  •   pumpkins · 2021-03-19 14:20:59 +08:00 · 1080 次点击
    这是一个创建于 1356 天前的主题,其中的信息可能已经有所发展或是发生改变。
    • 新手最近遇到一个 case:
    • 一个 Java 线上服务,平时高峰上游缓慢预热到 1 万 qps 可以平稳运行
    • 但是如果从 2k qps 突然增加到 1 万 qps 的时候 [和正常预热流量业务逻辑上无差别] ,CPU 会急剧上涨,上游调用出现大量超时
    • 后面掐掉突增的这部分流量以后 load 又下降但无法回复到原来的水位 [比如原来是 30%负载 1 万 qps 时是 70% 流量恢复以后就会变成 40%要重启以后才能回到 30%] 。
    • 很疑惑为什么需要预热这一步,按说平时 2k qps 的时候 jit 、dubbo 这些也预热好了
    6 条回复    2021-03-19 16:27:31 +08:00
    killergun
        1
    killergun  
       2021-03-19 15:39:36 +08:00
    没听过温水煮青蛙
    kkkkkrua
        2
    kkkkkrua  
       2021-03-19 15:51:17 +08:00
    你们这种情况,我猜测应该是有什么涉及需要消耗 cpu 计算的东西,然后流量突刺进来之后,一瞬间承受不住,就超时了,然后查查是不是有什么线程被 hang 住的情况,jvm 也看看。
    pumpkins
        3
    pumpkins  
    OP
       2021-03-19 16:06:06 +08:00
    @kkkkkrua 这里主要是日常峰值处理这个量级的 qps [平稳增加的] 没问题;但是如果是突增的就会有问题
    pumpkins
        4
    pumpkins  
    OP
       2021-03-19 16:07:14 +08:00
    @killergun 查了一下相关的预热相关,基本是服务刚启动时候才用到 jni 这些的预热。但是没有描述服务已经平稳运行以后为什么还要预热一下流量
    kkkkkrua
        5
    kkkkkrua  
       2021-03-19 16:25:46 +08:00
    @pumpkins #3 2000qps 不代表平稳,就拿 db 连接举例来说,当你突然增加 1w 的时候,可能会在同一个时间点同时开始 N 多个连接,这个时候 db 不一定响应得过来,这也是为什么需要限流的一个原因,那为什么你们预热到 1W 又没事呢,还是那 db 连接举例,当你平滑的到了 1W 的时候,这个时候连接还没销毁,直接用就完事了,个人的一个猜测
    kkkkkrua
        6
    kkkkkrua  
       2021-03-19 16:27:31 +08:00
    @pumpkins #3 建议你们可以压下自己系统能应对的流量突刺是多大,然后采用限流组件来应对这种情况,或者动态去设置一些连接池之类的优化性的参数,来解决这个问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3435 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:30 · PVG 19:30 · LAX 03:30 · JFK 06:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.