springcloud 在Hystrix中出现拒绝服务的熔断异常

当Hystrix的maxQueueSize设置为-1时,使用SynchronousQueue导致任务被reject。解决异常有两种方式:调整线程池等待队列或增加工作线程数,但不建议直接增大coreSize,应修改maxSize以防止常驻线程过多。
摘要由CSDN通过智能技术生成

 

java.util.concurrent.RejectedExecutionException: Task 
java.util.concurrent.FutureTask@3f54147b rejected from 
java.util.concurrent.ThreadPoolExecutor@55407c43[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 2638]

 

根据文档资料得到,在默认设置下,maxQueueSize的长度为-1,则使用了SynchronousQueue

 * maxQueueSize BlockingQueue的最大队列大小,设为-1使用SynchronousQueue,否则使用LinkedBlockingQueue,默认值:-1

    翻hystrix线程池的代码,得到如果是-1的情况下,hystrix是不进行判断队列的长度的,此时,直接交由线程池去处理。

    //HystrixThreadPool.java
    @Override
        public boolean isQueueSpaceAvailable() {
            if (queueSize <= 0) {
                // we don't have a queue so we won't look for space but instead
                // let the thread-p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值