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,不增反降,具体不知道为什么(2019年1月30日追加:这是因为随着worker进程的增加,nginx的master进程调度能力跟不上了)。

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

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

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

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

zuul:
semaphore:
max-semaphores: 5000

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

zuul:
ribbonIsolationStrategy: THREAD hystrix:
threadpool:
default:
coreSize: 100
maximumSize: 400
allowMaximumSizeToDivergeFromCoreSize: true
maxQueueSize: -1
maximumSize:最大线程数量

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

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

2018年8月31日追加:
Zuul使用的内置容器默认是Tomcat,可以将其换成undertow,可以显著减少线程的数量,替换方式即在pom中添加以下内容:
        <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>

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

Spring Cloud Zuul做网关,这性能我只能说凑合,不过它提供了比nginx更多的便利。不行就多部署几个Zuul。

最新文章

  1. Python - 类与对象的方法
  2. iOS 面试题搜集
  3. Shell脚本
  4. 制作QQ空间的一些想法
  5. Codevs 1021 玛丽卡
  6. mysql概要(三)having
  7. python 练习 15
  8. RESTful Webservice (一) 概念
  9. ext4.0绘制chart(柱状图,条形图)
  10. [置顶] 浅谈大型web系统架构
  11. sqlserver 操作技巧
  12. erlang集群IP及port管理
  13. Android ---paint类
  14. Spring Data JPA 简单查询--接口方法
  15. CCF-201509-3-生成模板系统
  16. Codeforces 833D Red-black Cobweb【树分治】
  17. thymeleaf 页面获取当前页面的完整URL地址
  18. docker基本管理
  19. http 请求参数之Query String Parameters、Form Data、Request Payload
  20. Hive创建内部表、外部表

热门文章

  1. 转:PHP高效率写法(详解原因)
  2. 奇怪吸引子---Coullet
  3. jboss中控制台jmx-console 登录的用户名和密码设置
  4. html5各种页面切换效果和模态对话框
  5. Gridview 单选效果实现,且用且珍惜
  6. 【Java】阿里巴巴Java开发手册(纪念版)
  7. SQL Server 数据库性能优化
  8. 转: MinGw离线安装方法集合
  9. OpenNebula学习第三节之虚拟机管理
  10. 最小公倍数 SRM 661 Div1 250: MissingLCM