问题:页面请求同一服务接口过多,导致并发量大,网关接收到大量请求后,部分接口直接返回503? 解决方案:# Spring Cloud Hystrix 线程池配置不正确,导致请求被熔断。
参考配置:
| coreSize | 线程池coreSize | 默认值:10设置标准:qps*99meantime+breathing room |
|---|---|---|
| maximumSize | 此属性设置最大线程池大小。 这是在不开始拒绝HystrixCommands的情况下可以支持的最大并发数。 请注意,此设置仅在您还设置allowMaximumSizeToDivergeFromCoreSize时才会生效。 | 默认值:10 |
| maxQueueSize | 请求等待队列 | 默认值:-1如果使用正数,队列将从SynchronizeQueue改为LinkedBlockingQueue |
| queueSizeRejectionThreshold | 此属性设置队列大小拒绝阈值 - 即使未达到maxQueueSize也将发生拒绝的人为最大队列大小。 此属性存在,因为BlockingQueue的maxQueueSize不能动态更改,我们希望允许您动态更改影响拒绝的队列大小。 | 默认值:5注意:如果maxQueueSize == -1,则此属性不适用。 |
| keepAliveTimeMinutes | 此属性设置保持活动时间,以分钟为单位。 | 默认值:1 |
| allowMaximumSizeToDivergeFromCoreSize | 此属性允许maximumSize的配置生效。 那么该值可以等于或高于coreSize。 设置coreSize <maximumSize会创建一个线程池,该线程池可以支持maximumSize并发,但在相对不活动期间将向系统返回线程。 (以keepAliveTimeInMinutes为准) | 默认值:false |
| metrics.rollingStats.timeInMilliseconds | 此属性设置statistical rolling窗口的持续时间(以毫秒为单位)。 这是为线程池保留多长时间。 | 默认值:10000 |
| metrics.rollingStats.numBuckets | 此属性设置滚动统计窗口划分的桶数。 注意:以下必须为true - “metrics.rollingStats.timeInMilliseconds%metrics.rollingStats.numBuckets == 0” -否则将引发异常。 | 默认值:10 |