Spring Cloud调优记录

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打印,调整数据库连接,避免等待连接过长
发布了1 篇原创文章 · 获赞 0 · 访问量 3
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览