本文将从 Tomcat性能优化,SpringCloud开启重试机制,Zuul网关性能参数优化,Ribbon性能参数优化,Feign与Hystrix性能优化等 五个方面分享在生产环境如何做好SpringCloud性能优化。
一般基于SpringCloud的微服务能够脱离传统的tomcat,独立跑起来,SpringBoot功不可没,其原理是SpringBoot内嵌了tomcat(当然可以换成其他servlet容器,如jetty),能够以java -jar形式就能跑起来。
所以针对每个springboot服务,我们需要对tomcat的一些参数进行优化,以下是楼主项目组优化的tomcat参数配置,供大家参考。
tomcat参数说明:
maxThreads,acceptCount参数应用场景
场景一
场景二
场景三
maxThreads调优
一般说服务器性能要从两个方面说起:
1、cpu计算型指标
2、io密集型指标
所以大部分情况下,tomcat处理io型请求比较多,比如常见的连数据库查询数据进行接口调用。
另外,要考虑tomcat的并发请求量大的情况下,对于服务器系统参数优化,如虚拟机内存设置和linux的open file限制。
maxThreads设置多大合适?
我们知道线程过多,会导致cpu在线程切换时消耗的时间随着线程数量的增加越来越大;线程太少,服务器的请求响应吞吐量会急剧下降,所以maxThreads的配置绝对不是越大越好。
实际情况是设置maxThreads大小没有最优解,要根据具体的服务器配置,实际的应用场景不断的调整和优化。
acceptCount设置多大合适?
尽量与maxThreads的大小保持一致 , 这个值应该是主要根据应用的访问峰值与平均值来权衡配置的。
当使用URL进行路由时,则需要对zuulhostconnect-timeout-millis和zuulhostsocket-timeout-millis参数控制超时时间。
请求连接的超时时间
请求处理的超时时间
对所有 *** 作请求都进行重试
对当前实例的重试次数,针对同一个服务实例,最大重试次数(不包括首次调用)
对下个实例的重试次数,针同其它的服务实例,最大重试次数(不包括首次server)
注意Hystrix断路器的超时时间需要大于ribbon的超时时间,不然不会触发重试
Feign和Ribbon在整合了Hystrix后,首次调用失败的问题?
目前楼主的强烈做法是: 禁用Hystrix的超时时间,设为false
还有一种是官方提倡的是 设置超时时间。
在实际的项目中亲测,这种方式也有不好的地方, 如请求时间超过5s会出现请求数据时有时无的情况 ,给用户的感觉是 系统不稳定,要求整改 。
另外,禁用hystrix,官方不推荐 。
hystrix超时设置原则
问题:一个> 以上就是关于如何使用Spring Cloud全部的内容,包括:如何使用Spring Cloud、spring-cloud微服务项目实战(8)-log4j2集成sleuth、关于Spring Cloud Alibaba,看这篇文章就够了!(附教程资料)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力! 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)