RPC 调用过多导致 Hystrix 熔断了接口 timeout 了怎么办 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wuzhizuiguo
V2EX    Java

RPC 调用过多导致 Hystrix 熔断了接口 timeout 了怎么办

  •  
  •   wuzhizuiguo 2021-02-28 15:32:19 +08:00 3384 次点击
    这是一个创建于 1705 天前的主题,其中的信息可能已经有所发展或是发生改变。

    订单->用户->支付 某个服务 A 被短时间内 RPC 调用次数太多,例如 /getUser read time out 了,然后就一层层 大量的报错,(然后手动重启...)

    暂时解决, 每个服务 在多台服务器部署个(不同端口 起多个 jar,例如服务 A 在每个服务器都起一个,然后指向同一个注册中心), RPC 请求服务 A 的 /getUser 会被分到不同的服务中(具体怎么分,我不清楚), 虽然解决了,但还是偶有报错.

    看到了服务熔断 /降级的博客文章, 想请教下大佬们 一般是怎么做的?

    8 条回复    2021-03-01 09:54:34 +08:00
    DoctorCat
        1
    DoctorCat  
       2021-02-28 16:42:31 +08:00
    你既然都说用了熔断措施了,那么问题我觉得不在于熔断如何进行,而是:
    针对这个熔断问题,站在业务方角度来看根本问题是:为何接口 timeout 了呢?
    针对这个 timeout 问题,站在 SLA 和客户体验角度来看,熔断后服务暂时不可用,最坏的打算是什么?如何告知 or 呈现给客户?如何快速的恢复服务?
    wuzhizuiguo
        2
    wuzhizuiguo  
    OP
       2021-02-28 16:48:18 +08:00
    @DoctorCat time out 是因为访问量太大了,调用不过来,服务它自身给 time out 了.
    timeout,会收到短信,我们就上去重启下... 不知道怎么控制, 又不能停止访问调用(真停了就是很尴尬,只能快点处理).
    zhgg0
        3
    zhgg0  
       2021-02-28 17:15:37 +08:00   1
    如果你这个接口是核心不可降级的接口,加上熔断措施也解决不了你的问题,本质还是要提升单实例性能和横向扩容。如果不是对实时性要求非常强的查询接口可以加缓存,在超出承受范围时走缓存或者降级逻辑。
    xuanbg
        4
    xuanbg  
       2021-02-28 17:22:01 +08:00
    网断了 timeout 了怎么办?所以该怎么办就怎么办。
    markgor
        5
    markgor  
       2021-02-28 17:26:52 +08:00   1
    @wuzhizuiguo
    熔断只是防止影响前链路上的业务,你现在已经达成了。
    我觉得你该考虑的不是降级,而是升级了....
    一般降级是作用于:request->redis->mysql; 当 redis 挂了,降级后请求直接跑 mysql 。(形容的可能不准确,但就是这个意思。


    之前看过文章介绍,现在找不到链接。
    大致上是:
    压测拿个临界值,
    达到 80%的时候横向扩展这个服务,
    降回来的时候释放这个服务....
    DoctorCat
        6
    DoctorCat  
       2021-02-28 18:40:02 +08:00   1
    @wuzhizuiguo 既然不能停,只是告警也不能解决问题呀,那么先解决扩容问题吧,服务容量水位低于 80%+ 就要继续扩容了。如果碍于经费或者其他资源限制,那么赶紧优化代码吧。没别的解法。
    GreyYang
        7
    GreyYang  
       2021-02-28 23:09:13 +08:00   1
    先上个健康检查, 出问题了 auto restart. 如果重启一下就能好, 整几个做负载均衡, 谁停了自动重启谁, 业务面可能无感. 听说过有项目生产环境中业务周期崩溃但是能通过自动重启恢复, 上线大半年了才发现有这问题...
    larve
        8
    larve  
       2021-03-01 09:54:34 +08:00   1
    那就是服务 A 的负载太大了,先在测试环境压测下服务 A 的承载上限吧
    1. 根据调用量推测节点数量,多节点部署,横向提高负载能力;但这种若是瓶颈在数据库,这种扩展节点就没啥作用
    2. 结合优化工具,优化服务 A 高频调用接口
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     934 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 21:04 PVG 05:04 LAX 14:04 JFK 17:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86