项目核心参数配置列表

 
参数
异常
示例
fegin

connectTimeout 连接超时时间 默认1S. 建议 1S


readTimeout 读取超时时间 默认1S。 建议 1~2S


因网络一般情况下较稳定,连接很少出现问题,connectTimeout可设置短一些

但是读取时因为网络波动等情况出状况的可能性更大一些,建议设置稍长一些(依据服务下游接口耗时情况)

hystrix 是否开启熔断机制 (依据情况开启),默认关闭,开启后参考hystrix配置。不建议打开

java.net.SocketException: connetct time out

 

Java.net.SocketException: read time out

在发生j.l.RuntimeException 后,会打开断路器,不再尝试执行实际方法(一段时间内直接走fallback)

feign:
client:
config:
default:
connectTimeout: 1000
readTimeout: 2000

feign:
hystrix:
enabled: false
hystrix熔断
参数
描述
metrics.rollingStats.timeInMilliseconds 统计时间窗。
circuitBreaker.sleepWindowInMilliseconds 休眠时间窗,熔断开启状态持续一段时间后,熔断器会自动进入半熔断状态,这段时间就被称为休眠窗口期。
circuitBreaker.requestVolumeThreshold 请求总数阀值。

在统计时间窗内,请求总数必须到达一定的数量级,Hystrix 才可能会将熔断器打开进入熔断开启转态,而这个请求数量级就是 请求总数阀值。Hystrix 请求总数阈值默认为 20,这就意味着在统计时间窗内,如果服务调用次数不足 20 次,即使所有的请求都调用出错,熔断器也不会打开。
circuitBreaker.errorThresholdPercentage 错误百分比阈值。

当请求总数在统计时间窗内超过了请求总数阀值,且请求调用出错率超过一定的比例,熔断器才会打开进入熔断开启转态,而这个比例就是错误百分比阈值。错误百分比阈值设置为 50,就表示错误百分比为 50%,如果服务发生了 30 次调用,其中有 15 次发生了错误,即超过了 50% 的错误百分比,这时候将熔断器就会打开。
 
hystrix:
command:
default:
metrics:
rollingStats:
timeInMilliseconds: 1000
circuitBreaker:
sleepWindowInMilliseconds: 10000
requestVolumeThreshold: 10
errorThresholdPercentage: 60
hystrix超时

timeout enabled 开启hystrix请求超时机制。默认true。false则永不超时。建议使用默认配置即可

 

timeoutInMilliseconds 在客户端配置,客户端调用的所有方法的超时时间都是该值。timeoutInMilliseconds 和 fegin的readTimeout同时存在,则谁小谁生效


 
hystrix:
command:
default:
execution:
isolation:
thread:
timeoutInMilliseconds: 3000
mysql      
redis
参数
说明
默认值
建议参考
maxTotal 资源池中的最大连接数 8

maxTotal(最大连接数)

想合理设置maxTotal(最大连接数)需要考虑的因素较多,如:

  • 业务希望的Redis并发量;
  • 客户端执行命令时间;
  • Redis资源,例如nodes (如应用ECS个数等) * maxTotal不能超过Redis的最大连接数(可在实例详情页面查看);
  • 资源开销,例如虽然希望控制空闲连接,但又不希望因为连接池中频繁地释放和创建连接造成不必要的开销。

假设一次命令时间,即borrow|return resource加上Jedis执行命令 ( 含网络耗时)的平均耗时约为1ms,一个连接的QPS大约是1s/1ms = 1000,而业务期望的单个Redis的QPS是50000(业务总的QPS/Redis分片个数),那么理论上需要的资源池大小(即MaxTotal)是50000 / 1000 = 50。

但事实上这只是个理论值,除此之外还要预留一些资源,所以maxTotal可以比理论值大一些。这个值不是越大越好,一方面连接太多会占用客户端和服务端资源,另一方面对于Redis这种高QPS的服务器,如果出现大命令的阻塞,即使设置再大的资源池也无济于事。

maxIdle 资源池允许的最大空闲连接数 8

maxIdle实际上才是业务需要的最大连接数,maxTotal 是为了给出余量,所以 maxIdle 不要设置得过小,否则会有new Jedis(新连接)开销,而minIdle是为了控制空闲资源检测。

连接池的最佳性能是maxTotal=maxIdle,这样就避免了连接池伸缩带来的性能干扰。如果您的业务存在突峰访问,建议设置这两个参数的值相等;如果并发量不大或者maxIdle设置过高,则会导致不必要的连接资源浪费。

minIdle 资源池确保的最少空闲连接数 0 不建议使用默认值
maxWaitMillis 当资源池连接用尽后,调用者的最大等待时间(单位为毫秒)。 -1(表示永不超时) 不建议使用默认值。
testOnBorrow 向资源池借用连接时是否做连接有效性检测(ping)。检测到的无效连接将会被移除。 false 业务量很大时候建议设置为false,减少一次ping的开销。
testOnReturn 向资源池归还连接时是否做连接有效性检测(ping)。检测到无效连接将会被移除。 false 业务量很大时候建议设置为false,减少一次ping的开销。
testWhileIdle 是否在空闲资源监测时通过ping命令监测连接有效性,无效连接将被销毁。 false true
timeBetweenEvictionRunsMillis 空闲资源的检测周期(单位为毫秒) -1(不检测) 建议设置,周期自行选择
minEvictableIdleTimeMillis 资源池中资源的最小空闲时间(单位为毫秒),达到此值后空闲资源将被移除。 1,800,000(即30分钟) 可根据自身业务决定,一般默认值即可
pingConnectionInterval redisson链接初始化新增连接心跳 30000(即 30S) 建议10S。参考 https://github.com/redisson/redisson/issues/3273
   
       
posted @   yczhang1011  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示