Zuul网关调优「建议收藏」

Zuul网关调优「建议收藏」网关的大部分工作是请求转发,属于IO密集型的应用,我们要在有限的资源的情况下结合公司实际请求场景做调优。一,容器选择在容器方面,undertow的呼声很高,一个是他很轻量级的,其次他属于java开发,性能也很好,笔者根据实际情况对tomcat和undertow做了一个对比默认配置下,8核cpu,tomcat启动后会初始化10个io线程,而undertow会初始化72个线程,8个IO线程,64个work线程(8*8)性能对比:写一个接口,接口中什么也不做,就睡眠2s请求个数

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

网关的大部分工作是请求转发,属于IO密集型的应用,我们要在有限的资源的情况下结合公司实际请求场景做调优。

一,容器选择

在容器方面,undertow的呼声很高,一个是他很轻量级的,其次他属于java开发,性能也很好,笔者根据实际情况对tomcat和undertow做了一个对比

默认配置下,8核cpu,tomcat启动后会初始化10个io线程,而undertow会初始化72个线程,8个IO线程,64个work线程(8*8)

性能对比:写一个接口,接口中什么也不做,就睡眠2s

请求个数 tomcat tomcat(max-threads:100) undertow
50 平均耗时(ms): 2241 2241 2321
线程个数: 93 93 105
内存 94 133
100 平均耗时(ms): 2231 2021 2517
线程个数: 143 138 105
内存
200 平均耗时(ms): 2424 2788 3884
线程个数: 238 138 105
内存
300 平均耗时(ms): 3596 3753 5454
线程个数: 238 138 105
内存
400 平均耗时(ms): 3427 4623 6865
线程个数: 238 138 105
内存

从对比来看,就初始化来看,tomcat最初只初始化10个线程,而undertow则会初始化所有的线程

性能来看,tomcat也是要占优势的

tomcat 比undertow要灵活,适应高峰和低谷也比较强

二,hystrix隔离方式

zuul默认的是信号量方式,也就是控制进来的请求总量,可以全局配置,也可以配置单个服务的最大信号量,还有一种方式是线程隔离,每种路由方式会创建单独的线程池,这样的好处是一个服务的影响不会扩散到其他的服务,但是在资源有限,且服务有限的情况下,还是信号量合适,这样我们可以充分利用tomcat创建的线程池,而不用创建过多的hystrix线程池

三:ribbon相应时间:

在默认的情况下,ribbon很容易就会报错,比如read timeout等,可以通过

ribbon:
  ReadTimeout: 60000
  ConnectTimeout: 10000
  MaxAutoRetries: 1
  MaxAutoRetriesNextServer: 1

来控制,但是如果设置过长也会导致长时间的等待,建议60比较合适

四:httpclient选择

zuul默认是Appache Httpclient,呼声比较高的是okhttp

但是经过测试,okhttp的性能更好,所以可以通过

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
</dependency>

引入okhttp并在ribbon中配置:

ribbon:
  httpclient:
    enabled: false
  okhttp:
    enabled: true

五:超时配置

使用zuul时,一共有三个超时参数

1.zuul.host.socket-timeout-millis和zuul.host.connect-timeout-millis这个超时是指在使用url路由时,则使用这里的超时,ribbon配置的超时将不会生效

2.ribbon.ReadTimeout 和ribbon.ConnectTimeout这个就是服务名路由时的超时

3.hystrix.command.execution.isolation.thread.timeoutMilliseconds这个超时在线程隔离的模式下是hystrix的熔断超时,应该大于ribbon和zuul的超时,还需加上重试的时间,在信号量隔离模式下是信号量的释放时间,也就是说如果你这里配置2 ,但是接口执行时间是5s,那么到了2秒后依然会释放信号量

还有一点需要注意的是hystrix.command.default.circuitBreaker.requestVolumeThreshold默认是20,也就是说如果熔断器失败了20个后就会开启CIRCUIT_OPEN模式这个也需结合实际情况来进行配置

六:jvm参数

根据目前dev环境情况(没有数据),以及本地测试(使用jmeter提交400个请求),网关一般情况下对内存使用为80M左右,老年代为36M左右,元数据空间为63M左右,可以保守设置为堆内存代销为300M,年轻代150M, 老年代150M,

而默认情况下,NewRatio=2 ,  而在JVM的默认参数中MetaspaceSize=21M , 这样会导致前期jvm调整metaspacesize大小并发生fullgc所以咱们可以设置一下jvm参数

-Xms300m -Xmx300m -XX:NewRatio=1 -XX:MetaspaceSize=100m

该配置下程序启动发生YGC :4   FGC : 0    堆中 E:80M , T : 0 M , F : 19M , O:9M ,Me:56M 

连续发起1600次请求后:YGC:10  FGC: 0    堆中:E:71M , T:0M , F : 10M, O:34M , Me: 62M

后期可根据生产实际情况调整大小

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170623.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dsp运动控制卡_营销行动方案控制

    dsp运动控制卡_营销行动方案控制ARM+FPGA运动控制卡运动控制卡方案运动控制卡方案运动控制卡方案由于ARM源码核心运动控制算法部分缺失,因此便宜出售此资料,拍前请了解好,不接受退货,资料包含此运动控制卡原理图,PCB图,FPGA源码,ARM去掉算法后的框架源码,拍下后发邮箱。本运动控制卡采用ARM单片机+FPGA架构;ARM单片机是基于Cortex-M3内核的LM3S6911,插补核心算法均在该ARM内完成,一方面通过以太网与上位机界面交换加工数据,另一方面与FPGA(ALTERA的EP1C3)交换加工脉冲计数与IO

    2022年10月15日
    2
  • 动态规划算法解01背包问题(思路及算法实现)

    动态规划算法解01背包问题(思路及算法实现)说明:算法源自教材。本文相当于对教材做的一个笔记(动态规划与贪心算法解01背包必须先对背包按照单位重量的价格从大到小排序,否则拆分的子问题就不具备最优子结构的性质)动态规划算法:动态规划就是一个填表的过程。该表记录了已解决的子问题的答案。求解下一个子问题时会用到上一个子问题的答案。{比如01背包问题:假如有1个背包,背包容量是10,有5个物品,编号为1,2,3,4,5,他们都有各自的…

    2022年7月26日
    7
  • 基于HTML5实现的在线3D虚拟试衣系统(试衣间)解决方案

    基于HTML5实现的在线3D虚拟试衣系统(试衣间)解决方案3D虚拟试衣系统的使用场景主要是在线电商或数字营销,为品牌服装、服饰、饰品添加高端3D虚拟购物动效,提升用户感官体验和交互体验。踏得网基于网页/HTML5独家研发了一套在线3D虚拟试衣间系统。纯网页版,跨平台支持,无需用户安装插件。

    2022年6月5日
    136
  • url转二维码[通俗易懂]

    url转二维码[通俗易懂]前端简单实现页面路径转化为二维码

    2025年9月22日
    6
  • Mysql数据库备份策略

    Mysql数据库备份策略Mysql数据库备份策略我的petstore所用的数据库是Mysql。Mysql的数据库备份不象那些企业界数据库那样完善,分为完全备份、差分备份以及日记纪录等等。Mysql备份数据库两个主要方法是用mysqldump程序或直接拷贝数据库文件。mysqldump与MySQL服务器协同操作。直接拷贝方法在服务器外部进行,并且你必须采取措施保证没有客户正在修改你将拷贝的表。如果你想用文件系统备份来备份数

    2022年5月2日
    45
  • ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误

    ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误说了你们可能不信,装ModelSim软件,今天整整装了一天才弄好,一直出现下面的错误。下面详细说一下解决这个问题的办法:方法一:不正面解决这个问题在FPGA做仿真的时候,可以不需要单独破解版的ModelSim,直接使用Quartus软件自带的ModelSim-Altrea安装上面两个软件,然后在仿真的时候,路径设置对就可以这个时候,你安装的ModelSim在桌面的图标你可以发现是叫ModelSim-Altrea方法二:正面解决这个问题如果你跟我一样,非要安装独立的版本,当你遇到这个问题的

    2022年5月12日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号