Spring Cloud Hystrix 线程池队列的正确配置

本文讲述了在生产环境中遇到的Hystrix调用异常问题,详细分析了Hystrix的coreSize、maxQueueSize和queueSizeRejectionThreshold属性的配置及其相互作用。当maxQueueSize设置较大但未配置queueSizeRejectionThreshold时,可能导致请求被拒绝。正确的配置应包括对这两个属性的同步调整,以确保系统的稳定运行。

背景

有一次在生产环境,忽然出现了不少笔还款单被挂起,后来排查缘由,发现是内部系统调用时出现了Hystrix调用异常。在开发过程当中,由于核心线程数设置的比较大,没有出现这种异常。放到了测试环境,偶尔有出现这种状况,后来在网上查找解决方案,网上的方案是调整maxQueueSize属性就行了,当时调整了一下,确实有所改善。可没想到在生产环境跑了一段时间后却又出现这种了状况,此时我第一想法就是去查看maxQueueSize属性,但是maxQueueSize属性是设置值了。当时就比较纳闷了,为何maxQueueSize属性不起做用,后来经过查看官方文档发现Hystrix还有一个queueSizeRejectionThreshold属性,这个属性是控制队列最大阈值的,而Hystrix默认只配置了5个,所以就算咱们把maxQueueSize的值设置再大,也是不起做用的。两个属性必须同时配置java。

Hystrix的正确配置姿势

hystrix:
  threadpool:
    default:
      coreSize: 200 #并发执行的最大线程数,默认10
      maxQueueSize: 1000 #BlockingQueue的最大队列数,默认值-1
      queueSizeRejectionThreshold: 800 #即便maxQueueSize没有达到,达到queueSizeRejectionThreshold该值后,请求也会被拒绝,默认值5
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值