如何优化你的 SpringBoot 项目应用

一个系统能承受多大的并发,很大程度上 架构就决定了~~下面以笔者亲身经历的一个项目(公司级短信项目)来剖析下

背景

线上短信系统稳定运行一年多,突然某天 系统请求出现大量超时,服务不可用,调查下来 有个部门在搞营销活动,大量营销短信集中推送,导致系统短时请求负载过高,于是在本人主导下 立即对短信系统的架构进行了调整,将营销性质的短信 由同步改为异步,系统架构上的调整当然能很大程度上改善系统的吞吐量,但是这一步有时候会很难。这里不讨论架构方面的调整,假设你的架构已无可调整。对于普通的 springboot应用,如何优化呢?

在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?

  1. 方便微服务部署。
  2. 方便项目启动,不需要下载Tomcat或者Jetty

需要考虑以下几个优化点:

  • 线程数
  • 超时时间
  • jvm 优化

线程数是一个重点,初始线程数和最大线程数,初始线程数保障启动的时候,如果有大量用户访问,能够很稳定的接收请求。

最大线程数量用来保证系统的稳定性,而超时时间用来保证连接持续等待,如果有大量请求过来,延迟比较高,不容易把线程打满,这种情况在生产中是比较常见的,一旦网络不稳定,宁愿丢包,也不能把机器打垮。

jvm 的优化一般就是加大初始堆和最大堆,还有垃圾回收机制的设置。

在spring boot配置文件中application.yml,添加以下配置

server:
 tomcat:
 min-spare-threads: 20
 max-threads: 100
 connection-timeout: 5000

这块对tomcat进行了一个优化配置,最大线程数是100,初始化线程是20,超时时间是5000ms

以上优化点 只是提供一种 优化的方向,具体参数设置,还是要以实际生产压测结果为准!!!

转载于:https://www.jianshu.com/p/8b94abe57208

猜你喜欢

转载自blog.csdn.net/weixin_34082789/article/details/91063901