Spring Cloud 各組件調優參數


Spring Cloud整合了各種組件,每個組件往往還有各種參數。本文來詳細探討Spring Cloud各組件的調優參數。

Tomcat配置參數

  1 server:
  2   tomcat:
  3     max-connections: 0 # 默認值
  4     max-threads: 0     # 默認值

Hystrix配置參數

  • 如隔離策略是THREAD:
  1 hystrix.threadpool.default.coreSize: 10
  2 hystrix.threadpool.default.maximumSize: 10
  3 hystrix.threadpool.default.maxQueueSize: -1 # 如該值為-1,那么使用的是SynchronousQueue,
  4 否則使用的是LinkedBlockingQueue。
  5 注意,修改MQ的類型需要重啟。例如從-1修改為100,需要重啟,因為使用的Queue類型發生了變化

如果想對特定的HystrixThreadPoolKey 進行配置,則將default 改為 HystrixThreadPoolKey 即可。

  • 如果隔離策略是SEMAPHORE:
  1 hystrix.command.default.execution.isolation.strategy: SEMAPHORE
  2 hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests: 10 # 默認值

如果想對指定的HystrixCommandKey 進行配置,則將default 改為HystrixCommandKey 即可。

Feign配置參數

Feign默認沒有線程池。

當使用HttpClient時,可如下設置:

  1 feign:
  2   httpclient:
  3     enabled: true
  4     max-connections: 200 # 默認值
  5     max-connections-per-route: 50 # 默認值

代碼詳見:

  • org.springframework.cloud.netflix.feign.FeignAutoConfiguration.

    HttpClientFeignConfiguration#connectionManager

  • org.springframework.cloud.netflix.feign.ribbon.

    HttpClientFeignLoadBalancedConfiguration.HttpClientFeignConfiguration#connectionManager

當使用OKHttp時,可如下設置:

  1 feign:
  2   okhttp:
  3     enabled: true
  4   httpclient:
  5     max-connections: 200 # 默認值
  6     max-connections-per-route: 50 # 默認值

代碼詳見:

  • org.springframework.cloud.netflix.feign.FeignAutoConfiguration.

    OkHttpFeignConfiguration#httpClientConnectionPool

  • org.springframework.cloud.netflix.feign.ribbon.OkHttpFeignLoadBalancedConfiguration.

    OkHttpFeignConfiguration#httpClientConnectionPool

Zuul配置參數

我們知道Hystrix有隔離策略:THREAD 以及SEMAPHORE ,默認是 SEMAPHORE

隔離策略
  1 zuul:
  2   ribbon-isolation-strategy: thread
最大信號

當Zuul的隔離策略為SEMAPHORE時:

設置默認最大信號量:

  1 zuul:
  2   semaphore:
  3     max-semaphores: 100 # 默認值

設置指定服務的最大信號量:

  1 zuul:
  2   eureka:
  3     <commandKey>:
  4       semaphore:
  5         max-semaphores: 100 # 默認值

參考:

Zuul參數
  • Hystrix並發參數

Edgware及之后的版本中,當Zuul的隔離策略為THREAD時,可為Hystrix配置獨立線程池:

參考:http://www.itmuch.com/spring-cloud/edgware-new-zuul-hystrix-thread-pool/

如果不設置獨立線程池,那么HystrixThreadPoolKeyRibbonCommand

Hystrix並發配置參數請參考《Hystrix並發配置參數一節》

  • Zuul並發參數:

Zuul內置的Filterhttp://www.itmuch.com/%2Fspring-cloud%2Fzuul%2Fzuul-filter-in-spring-cloud%2F

對於形如:

  1 zuul:
  2   routes:
  3     user-route:                   # 該配置方式中,user-route只是給路由一個名稱,可以任意起名。
  4       url: http://localhost:8000/ # 指定的url
  5       path: /user/**              # url對應的路徑。

的路由,可使用如下方式配置並發參數:

  1 zuul:
  2   host:
  3     max-total-connections: 200 # 默認值
  4     max-per-route-connections: 20 # 默認值
  • 當Zuul底層使用的是Apache HttpClient時,對於使用Ribbon的路由,可使用如下方式配置並發參數:
  1 serviceId:
  2   ribbon:
  3     MaxTotalConnections: 0   # 默認值
  4     MaxConnectionsPerHost: 0 # 默認值

相關代碼:org.springframework.cloud.netflix.ribbon.support.AbstractLoadBalancingClient 子類的createDelegate 方法。



轉載自:http://www.itmuch.com/spring-cloud-sum/spring-cloud-concurrent/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM