Springboot 优化内置服务器Tomcat优化(underTow)

打印 上一主题 下一主题

主题 640|帖子 640|积分 1920


前言

   通过org.springframework.boot.autoconfigure.web.ServerProperties查看,此中包括属性tomcat、jetty、undertow三种服务器的设置,默认启用tomcat。
  Tomcat 自身优化

  1. # Tomcat
  2. server:
  3.   tomcat:
  4.     uri-encoding: UTF-8
  5.     #最小线程数
  6.     min-spare-threads: 500
  7.     #最大线程数
  8.     max-threads: 2500
  9.     #最大链接数
  10.     max-connections: 6500
  11.     #最大等待队列长度
  12.     accept-count: 1000
  13.     #请求头最大长度kb
  14.     max-http-header-size: 1048576
  15.     #请请求体最大长度kb
  16.     #max-http-post-size: 2097152
  17.   #服务http端口
  18.   port: 8080
  19.   #链接建立超时时间
  20.   connection-timeout: 12000
  21.   servlet:
  22.     #访问根路径
  23.     context-path: /son
复制代码
比力告急的有两个:初始线程数最大线程数
   初始线程数:保障启动的时候,如果有大量用户访问,能够很稳固的接受哀求。
  最大线程数:用来保证系统的稳固性。
  其它参数优化:
   min-spare-threads:最小备用线程数,tomcat启动时的初始化的线程数。
  max-threads:Tomcat可创建的最大的线程数,每一个线程处理一个哀求,超过这个哀求数后,客户端哀求只能排队,等有线程释放才能处理。(发起这个设置数可以在服务器CUP核心数的200~250倍之间)
  accept-count:当调用Web服务的HTTP哀求数达到tomcat的最大线程数时,还有新的HTTP哀求到来,这时tomcat会将该哀求放在等候队列中,这个acceptCount就是指能够接受的最大等候数,默认100。如果等候队列也被放满了,这个时候再来新的哀求就会被tomcat拒绝(connection refused)。
  max-connections:这个参数是指在同一时间,tomcat能够接受的最大连接数。一般这个值要大于(max-threads)+(accept-count)。
  connection-timeout:最长等候时间,如果没有数据进来,等候一段时间后断开连接,释放线程。
   
  UnderTow优化 

为什么要变成UnderTow?

我们在相同机器设置下压测Tomcat和Undertow,得到的测试效果如下所示:
Tomcat:

UnderTow:

内存利用对比:


结论:
   Undertow在高并发业务场景中,性能优于Tomcat
  实现方式:

POM文件移除tomcat换成underTow
  1.         <dependency>
  2.             <groupId>org.springframework.boot</groupId>
  3.             <artifactId>spring-boot-starter-web</artifactId><!-- 移除掉默认支持的 Tomcat -->
  4.             <exclusions>
  5.                 <exclusion>
  6.                     <groupId>org.springframework.boot</groupId>
  7.                     <artifactId>spring-boot-starter-tomcat</artifactId>
  8.                 </exclusion>
  9.             </exclusions>
  10.         </dependency>
  11.         <dependency>
  12.             <groupId>org.springframework.boot</groupId>
  13.             <artifactId>spring-boot-starter-undertow</artifactId>
  14.         </dependency>
复制代码
 设置相干参数:
   # 是否打开 undertow 日记,默认为 false
server.undertow.accesslog.enabled=false
# 设置访问日记所在目录
server.undertow.accesslog.dir=logs
# 指定工作者线程的 I/0 线程数,默认为 2 大概 CPU 的个数
server.undertow.io-threads=
# 指定工作者线程个数,默认为 I/O 线程个数的 8 倍
server.undertow.worker-threads=
# 设置 HTTP POST 内容的最大长度,默认不做限制
server.undertow.max-http-post-size=0

  最后直接main 方法启动Springboot即可。 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南飓风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表