Spring Cloud调优记录

本文记录了Spring Cloud Finchley.RELEASE版本的调优过程,包括Zuul网关信号量调整,服务间调用使用HttpClient,Ribbon参数优化,Hystrix线程池设置,以及考虑替换Tomcat为Undertow等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Cloud调优记录(版本Finchley.RELEASE)

记一下自己针对Spring Cloud调优的过程

1.Zuul网关信号量调整

zuul对请求是信号量隔离,当一个请求达到最大信号量,则直接熔断。 默认为100
zuul请求对于单个host连接数和总共连接数有限制,也需要调整连接数
zuul:
  semaphore:
    max-semaphores: 1000 # zuul对请求是信号量隔离,当一个请求达到最大信号量,则直接熔断。 默认为100
  host:
    socket-timeout-millis: 60000
    connect-timeout-millis: 60000
    max-per-route-connections: 200 #单个host最大连接数
    max-total-connections: 1000 #总最大连接数

2.各个服务feign采用HttpClient (存在调用其他服务时)

feign默认是采用JDK的http组件来发送请求,替换为httpClient能大大提升发送请求的效率。

依赖如下包: httpclient的包可以不依赖,如果有版本要求可以依赖

  <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
  </dependency>
 <dependency>
     <groupId>com.netflix.feign</groupId>
     <artifactId>feign-httpclient</artifactId>
     <version>8.17.0</version>
 </dependency>

feign对于httpClient的配置在HttpClientFeignLoadBalancedConfiguration类中:
默认已经配置了HttpClientConnectionManager,没有特殊要求就不需要自己去重写了。

		@Bean
		@ConditionalOnMissingBean(HttpClientConnectionManager.class)
		public HttpClientConnectionManager connectionManager(
				ApacheHttpClientConnectionManagerFactory connectionManagerFactory,
				FeignHttpClientProperties httpClientProperties) {
			final HttpClientConnectionManager connectionManager = connectionManagerFactory
					.newConnectionManager(httpClientProperties.isDisableSslValidation(), httpClientProperties.getMaxConnections(),
							httpClientProperties.getMaxConnectionsPerRoute(),
							httpClientProperties.getTimeToLive(),
							httpClientProperties.getTimeToLiveUnit(), registryBuilder);
			this.connectionManagerTimer.schedule(new TimerTask() {
				@Override
				public void run() {
					connectionManager.closeExpiredConnections();
				}
			}, 30000, httpClientProperties.getConnectionTimerRepeat());
			return connectionManager;
		}

feign.httpclient.enabled属性设置为true (网关存在调用其他服务时)

feign:
  hystrix:
    enabled: true
  httpclient:
    enabled: true
    maxConnectionsPerRoute: 200
    maxConnections: 1000

3.各个服务调整Ribbon参数 (存在调用其他服务时)

ribbon:
  eureka:
    enabled: true
  MaxConnectionsPerHost: 200 #单个host最大连接数
  MaxTotalConnections:   1000 #总最大连接数
  PoolMaxThreads: 1000 #ribbon的最大工作线程数
  ReadTimeout: 60000
  ConnectTimeout: 60000

4. 调整Histrix线程池参数

hystrix:
  threadpool:
    default:
      coreSize: 100
      maxQueueSize: 1000
      queueSizeRejectionThreshold: 1000

4. 替换tomcat为undertow(网上说的,我没实战先记录吧)

5.其他

关闭一些不必要的日志,如sql打印,调整数据库连接,避免等待连接时间过长
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值