码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Cloud Zuul性能调整

时间:2018-06-15 13:01:23      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:其它   RKE   调整   max   tar   ola   文章   str   efault   

Spring Cloud 版本:

Dalston.SR5

这两天通过JMeter测了一下Spring Cloud Zuul的性能,用的是两台虚机8核8G和4核8G,宿主机是10核逻辑20核,代理的服务简单的返回字符串hello,vm堆内存1G够用

 

先说一下测试情况,值得一提的是测试并不严谨,因为用的是虚机,并且虚机上还跑了一些其它的东西,所以不能作为最终指导,仅供参考。

 

8核心的情况下:

zuul的性能约是nginx(8个worker)的75%,

nginx 8个worker 的cup总占用率为360%(有点奇怪)

zuul 占用750%

 

4核的情况下:

zuul大约是nginx(4个worker)性能的40%,

nginx的cup总占用率为320%

zuul占用380%

 

奇怪的现象:

nginx在4核下吞吐2W,8核下吞吐1W6,不增反降,具体不知道为什么。

测试zuul的时候,前几次性能比较低,到后边就比较稳定和高效了,可能和JIT有关,也可能是线程创建的比较慢,线程默认寿命是一分钟。

—————————————————————————————————分割线———————————————————————————————————————

Zuul默认是使用信号量隔离,并且信号量的大小是100,请求的并发线程超过100就会报错

可以调大该信号量的最大值来提高性能,配置如下:

zuul:
  semaphore:
    max-semaphores: 5000

 

也可以改为使用线程隔离,调大hystrix线程池线程大小,该线程池默认10个线程,配置如下:

zuul:
  ribbonIsolationStrategy: THREAD

hystrix:
  threadpool:
    default:
      coreSize: 100
      maximumSize: 5000
      allowMaximumSizeToDivergeFromCoreSize: true
      maxQueueSize: -1
maximumSize:最大线程数量

allowMaximumSizeToDivergeFromCoreSize:是否让maximumSize生效,false的话则只有coreSize会生效
maxQueueSize:线程池的队列大小,-1代表使用SynchronousQueue队列


默认配置都可以去HystrixThreadPoolProperties和ZuulProperties这两个java文件中查找




再来一篇比较靠谱的文章:
https://www.sohu.com/a/221110905_467759


Spring Cloud Zuul做网关,这性能还算过得去,毕竟它提供了比nginx更多的便利。不行就多部署几个Zuul,Zuul一般不会成为瓶颈。

 

Spring Cloud Zuul性能调整

标签:其它   RKE   调整   max   tar   ola   文章   str   efault   

原文地址:https://www.cnblogs.com/flying607/p/9186268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!