Spring Boot Hystrix maximumSize 不起作用
Posted
技术标签:
【中文标题】Spring Boot Hystrix maximumSize 不起作用【英文标题】:Spring Boot Hystrix maximumSize not working 【发布时间】:2020-11-30 05:39:29 【问题描述】:我在我的项目中使用了 Spring Boot 和 Hystrix
这是我的 pom 依赖项
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath />
<properties>
<java.version>11</java.version>
<cxf.version>3.3.1</cxf.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
这是我的 application.properties
hystrix.threadpool.default.coreSize=2
hystrix.threadpool.default.maximumSize=200
hystrix.threadpool.default.maxQueueSize=50
hystrix.threadpool.default.queueSizeRejectionThreshold=50
hystrix.threadpool.default.keepAliveTimeMinutes=1
hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize=true
使用此配置,我的应用无法处理 100ccu。显示这个错误:"java.util.concurrent.RejectedExecutionException: Rejected command because thread-pool queueSize is at rejection threshold"
.
我可以看到日志记录只创建 2 个 hystrix 线程来处理请求
hystrix-MyService-1
hystrix-MyService-2
为什么在我配置 maximumSize=200 时它无法创建更多线程来处理请求?
例如,如果我增加 coreSize=200,我可以看到它们永远不会终止。 那么如何设置一个小的 coreSize 但仍然可以在需要时处理更多请求(最多 maxSize 并发线程),然后在没有新请求时释放它们?
【问题讨论】:
【参考方案1】:hystrix.threadpool.default.maximumSize
配置仅在 hystrix.threadpool.default.maxQueueSize=-1
时有效
如果在您的情况下需要队列 - 那么就无法在池中创建然后释放额外的线程。
有详细解释的文章:https://programmer.help/blogs/hystrix-thread-pool-configuration.html
【讨论】:
以上是关于Spring Boot Hystrix maximumSize 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Spring Boot mybatis分布式微服务云架构-hystrix参数详解
Spring Cloud Spring Boot mybatis分布式微服务云架构-hystrix参数详解
深入Spring Boot:快速集成Dubbo + Hystrix
spring-boot-starter-actuator 与 hystrix-servo-metrics-publisher 冲突