性能优化=====Fegin、Hystrix熔断 产线高并发 优化实战

本文探讨了在微服务架构中,HTTP交互的性能优化以及Hystrix和Feign的正确配置。指出HTTP耗时、连接管理不当等问题可能导致服务性能下降,并详细解析了Hystrix的配置优化,如调整核心线程池大小、熔断器请求阈值等,以提升系统并发能力。同时,提供了设置这些参数的计算公式和注意事项,以避免限制服务性能。

背景

前段时间,负责公司的一个服务的优化,发现了不少问题, 本文说一下Feign 和 Hystrix。

在微服务的背景下,服务间的交互少不了HTTP。

故性能优化中,比较重要一环就是HTTP交互,
但若使用不当,就会导致

  • HTTP耗时长,获取http连接出现大量等待超时
  • 多次创建Httpclient导致OOM
  • 长连接情况没有清除闲置连接导致NoHttpResponseException 等问题。

而与其他服务交互中,也少不了熔断机制,来降级处理高并发的问题,
但若使用不当,不仅没有使服务的性能更好,反而会限制服务的性能

这里说一下Hystrix、feign 高并发配置中容易出错以及正确的配置。

Hystrix

修改前

# Hystrix config
feign.hystrix.enabled = true
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 60000

修改后

# Hystrix config
feign.hystrix.enabled = true
#QPS * 窗口秒数 * 60%  1000 * 10 * 0.6 = 6000
hystrix.command.default.circuitBreaker.requestVolumeThreshold = 6000
#QPS * 99% cost + redundancy count  Qps 1000*(0.5)= 500
hystrix.threadpool.default.coreSize = 500   
hystrix.threadpool.default.maxQueueSize = 10000
hystrix.threadpool.default.maximumSize = 600
hystrix.threadpool.default.allowMaximumSizeToDivergeFromCoreSize = true
hystrix.threadpool.default.queueSizeRejectionThreshold = 10000
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 10000

这里需要注意

1.hystrix.threadpool.default.coreSize

核心线程池的大小,要是没有设置这个参数会导致不管多大的请求量,你请求下游服务只有10个并发
,因为它的默认值是10,这里就会导致下游服务永远最多只有10请求
,大大限制系统的并发量。

那么这个参数应该怎么设置:
线程数 = 每秒请求数 * 响应时长(单位s) + (缓冲线程数)

2.hystrix.command.default.circuitBreaker.requestVolumeThreshold
熔断器功能窗口时间内触发熔断的最小请求失败数量
那么这个参数应该怎么设置:
QPS * 窗口秒数 * 60%

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值