测试工具:Jmeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
测试Tomcat ,因为Spring Boot默认服务器是Tomcat,所以可以直接测试
第一步,打开Jmeter 配置线程组,请求次数10000次
在线程组上添加http请求配置
配置聚合报告,查看运行吞吐量
测试三次后,取平均值,测试结果跟电脑配置有关,不同电脑结果不一样,我们只是在同一配置同一时间对比吞吐量
测试Undertow
默认情况下,Spring Boot 使用 Tomcat 来作为内嵌的 Servlet 容器,可以将 Web 服务器切换到 Undertow 来提高应用性能,Undertow 是红帽公司开发的一款基于 NIO 的高性能 Web 嵌入式服务器
· Untertow 的特点:
· 轻量级:它是一个 Web 服务器,但不像传统的 Web 服务器有容器概念,它由两个核心 Jar 包组成,加载一个 Web 应用可以小于 10MB 内存
· Servlet3.1 支持:它提供了对 Servlet3.1 的支持
· WebSocket 支持:对 Web Socket 完全支持,用以满足 Web 应用巨大数量的客户端
· 嵌套性:它不需要容器,只需通过 API 即可快速搭建 Web 服务
第一步,移除Tomcat 依赖
<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>
第二步,增加Untertow 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
项目中Tomcat 服务器移除,新增了Untertow
第三步,重新启动项目进行测试,测试结果
其实差别不大,理论上Undertow比Tomcat的吞吐量要高很多,可能与测试机器有关,但测试效果上看还是要好一些。