API网关Zuul(3)--性能调优

经过之前大量压测,先给出效果较理想的性能参数

spring:
  application:
    name: api-gateway
server:
  context-path: /api-gateway
  port: 8040
 tomcat:
   accept-count: 1000  #tomcat接受排队的最大数量
   max-threads: 1000 #tomcat工作线程数量
   max-connections: 2000 #tomcat处理的最大连接数
eureka:
  client:
    service-url:
      defaultZone: xxx, xxx
  instance:
    prefer-ip-address: true
    metadataMap:
      xxx: xxx
zuul:
  semaphore:
    max-semaphores: 1000 #信号量
hytrix:
  command:
    default:
      execution:
        isolation:
          thread: 
            timeoutInMilliseconds: 3000 #隔离策略超时时间,默认1000
ribbon:
  MaxConnectionPerHost: 200 #每个host的最大连接数
  MaxTotalConnections: 1000 #ribbon的最大连接数
  PoolMaxThreads: 1000 #ribbon的最大工作线程数
  ConnectTimeout: #ribbon转发后台服务的最大连接时间
  ReadTimeout: #ribbon转发后台服务的最大读取时间

说明:

  1. 关于tomcat配置:
    zuul是运行于tomcat容器中的,所以需要tomcat的配置,否则会引起木桶效应,整个调用流程会受到配置最差的应用的干扰。
  2. zuul.semaphore.max-semaphores:
    每一个route都被HystrixCommand包裹,Zuul中采用的是信号量的资源隔离策略,默认semaphore的值为100,当请求超过这个值时就会被立刻拒绝,所以也需要修改为:max-semaphores: 1000
  3. Hystrix参数配置:
    timeoutInMilliseconds的值默认为1000,用于配置网关线程池和信号量隔离策略的最大超时时间,如果配置较小的话,会报Hystrix timeout的Exception
  4. ribbon相关配置:
    因为网关内部时通过Ribbon转发请求给服务提供者,所以需要配置ribbon的相关性能参数,zuul内部路由可以理解为使用一个线程池去发送路由请求,所以我们也需要扩大这个线程池的容量。
  5. JVM参数
    根据压测结果来看,推荐Zuul的JVM参数配置为:-Xmx2g -Xms2g -Xmn1g -Xss256k,TPS和RT比较理想,再往上调JVM内存到4G,差别不大。

你可能感兴趣的:(API网关Zuul(3)--性能调优)