SpringBoot服务器压测对比(jetty、tomcat、undertow)
1、本次对比基础环境信息如下:
springboot版本1.5.10
centos虚机4c6G,版本7.4
centos实机2u16c40G,版本7.4,虚机运行在实机上
ab版本2.3
jprofiler版本9.1.1
2、压测接口说明
天花板:指的是一个空接口,没有任何实现,直接返回,如
@RequestMapping(value = "/test", method = RequestMethod.GET)
public void test() {
}
服务接口:指的是具有一定业务代码的接口,连接数据库/Redis然后返回json数据
异步接口:指的是开启了http异步
3、压测过程
JETTY
先以Jetty开始,这里通过优化参数来不断摸底。以下是参数说明:
jettyMin:最小连接数
jettyMax:最大连接数
mvcCore:线程池core数量
mvcMax:线程池最大量
mvcQueue:线程池队列大小
大致结果如下:
| JETTY天花板(无异步) | ||||
| jettyMin | 50 | 100 | 200 | 300 |
| jettyMax | 600 | 600 | 600 | 600 |
| mvcCore | 50 | 50 | 50 | 50 |
| mvcMax | 200 | 200 | 200 | 200 |
| mvcQueue | 100 | 100 | 100 | 100 |
| 结果 | 2090 | 2116 | 2374 | 2100 |
| JETTY天花板(无异步) | |||
| jettyMax | 400 | 600 | 800 |
| jettyMin | 200 | 200 | 200 |
| mvcCore | 50 | 50 | 50 |
| mvcMax | 200 | 200 | 200 |
| mvcQueue | 100 | 100 | 100 |
| 结果 | 1655 | 2170 | 2000 |
| JETTY天花板(异步) | |||
| jettyMax | 600 | 600 | 600 |
| jettyMin | 200 | 200 | 200 |
| mvcCore | 50 | 100 | 200 |
| mvcMax | 200 | 200 | 200 |
| mvcQueue | 100 | 100 | 100 |
| 结果 | 1500 | 1600 | 1450 |
| JETTY天花板(异步) | |||
| jettyMax | 600 | 600 | 600 |
| jettyMin | 200 | 200 | 200 |
| mvcCore | 100 | 100 | 100 |
| mvcMax | 200 | 400 | 600 |
| mvcQueue | 100 | 100 | 100 |
| 结果 | 1600 | 1700 | 1550 |
| JETTY天花板(异步) | |||
| jettyMax | 600 | 600 | 600 |
| jettyMin | 200 | 200 | 200 |
| mvcCore | 100 | 100 | 100 |
| mvcMax | 400 | 400 | 400 |
| mvcQueue | 100 | 200 | 300 |
| 结果 | 1600 | 1700 | 1600 |
以下是通过工具预估最佳线程数,然后修改优化参数的结果:
| JETTY天花板(无异步) | |||
| jettyMax | 600 | 52 | |
| jettyMin | 200 | 52 | |
| mvcCore | 52 | 52 | |
| mvcMax | 52 | 52 | |
| mvcQueue | 199 | 199 | |
| 结果 | 1520 | 1600 |
| JETTY业务接口(异步) | |||
| jettyMax | 600 | ||
| jettyMin | 200 | ||
| mvcCore | 52 | ||
| mvcMax | 52 | ||
| mvcQueue | 199 | ||
| 结果 | 1719 |
| JETTY业务接口(无异步) | |||
| jettyMax | 600 | ||
| jettyMin | 200 | ||
| mvcCore | 52 | ||
| mvcMax | 52 | ||
| mvcQueue | 199 | ||
| 结果 | 2000 |
通过以上结果发现一个问题,开启异步HTTP后压测的结果均不如不开启HTTP异步的结果。
TOMCAT
通过切换成tomcat再按照以上过程压测,发现HTTP和tomcat才是天生一对,组合压测下的结果和Jetty不开启异步的结果差不多。这里不再重复贴出数据表格。
UNDERTOW
通过Jetty和tomcat的压测结果发现,HTTP异步并不一定会提升程序性能,只有在特定的条件下才会起到正面的效果,如应用服务器为非NIO时。而undertow和jetty一样是NIO,所以这里不再对比异步非异步,直接只测非异步。优化参数只有两个:
ioThreads:cpu核数
workerThreads:工作线程数(可以通过工具预估出来)
以下是数据。
| UNDERTOW业务接口(无异步) | |||
| ioThreads | 4 | ||
| workerThreads | 52 | ||
| 结果 | 2200 |
| UNDERTOW天花板(无异步) | |||
| ioThreads | 4 | ||
| workerThreads | 52 | ||
| 结果 | 3100 |
4、jprofiler图标对比
jetty


tomcat


UNDERTOW


5、附最佳线程数预估工具
GITHUB地址https://github.com/sunshanpeng/dark_magic 原文博客:http://ifeve.com/how-to-calculate-threadpool-size/
Undertow使用&优化:https://www.jianshu.com/p/e625b8aa0e80
原文链接:https://my.oschina.net/shyloveliyi/blog/2980440
SpringBoot服务器压测对比(jetty、tomcat、undertow)的更多相关文章
- web服务器压测工具siege、ab
web服务器压测工具也挺多,这里只介绍我用过的这两种--siege(for linux).ab(for windows). 一.siege 1.简介: Siege是一款开源的压力测试工具,设计用于评估 ...
- (转)一次压测对nginx/tomcat配置的调整
原文地址:还在寻找.... 一个web系统,前端使用nginx做为反向代理,处理https,并将请求转发给后端的tomcat服务. 压力测试工具选择了jmeter. 首先简单介绍一下jmeter. 它 ...
- 压力测试(六)-阿里云Linux服务器压测接口实战
1.SpringBoot 接口打包,并用jar包方式部署 简介:用jar包方式在控制台进行启动 打包 mvn package && java -jar target/gs-spring ...
- Jmeter非GUI界面对阿里云服务器压测
一.Jmeter非GUI界面 参数讲解 讲解:非GUI界面,压测参数讲解 -h 帮助 -n 非GUI模式 -t 指定要运行的 JMe ...
- JMeter性能测试9:阿里云服务器压测
第一步准备好jmeter脚本 第二步 将本地的jmeter脚本上传到阿里云进行验证 检验阿里云的jmeter是否能正常运行 将本地的脚本上传到阿里云使用xshell进入到该目录下 使用命令运行刚才上传 ...
- 利器: 用Siege做Web服务器压测
用「Web压测」关键词检索,能找到好多进行压测的工具,比如ab.Http_load.Webbench.Siege这些,不过今天并不是要对这些工具做对比,毕竟我们只是想得到一个结果.本文主要介绍Sieg ...
- nginx、php-fpm、swoole HTTP/TCP压测对比
本次测试是在win7下docker环境中进行压测,共创建一个nginx容器.一个php-fpm容器和一个swoole容器,客户端请求nginx服务器,nginx接收用户访问请求并转发给php-fpm, ...
- Linux服务器压测/拷机软件收集
最近公司采购了一批服务器,于是收集了一些拷机软件来压测服务器硬件性能.硬件的稳定相对来说比较重要,7x24小时无间断运行,主要看三个硬件:CPU.内存.硬盘. 下面是收集的一些教程,可能网址已经失效了 ...
- CoolHash数据库引擎压测对比报告
Coolhash 当前性能指标:读写吞吐量超过百万,千万级别查询1秒完成,连续48小时打满CPU强压力运行稳定.redis官方公布读写性能在10万 tps,leveldb官方公布写性能在40万tps, ...
随机推荐
- 拦截器(Inteceptor),过滤器(Filter),切面(Aspect)处理HttpServiceReqeust请求
1.拦截器 java里的拦截器是动态拦截Action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可 ...
- android去权限反编译,签名,zipalign优化
反编译:上工具ApkTool 下载自行搜索google apktool github cd apktool目录 java -jar apktool_2.0.1.jar d xx.apk 生成xx目录 ...
- Django - admin后台、auth权限
admin后台 一.创建一个管理员用户 (1).设置时区.语言(可选步骤) 打开settings.py,改成下面那样 LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'As ...
- hdu2732 (Leapin' Lizards)
题目链接:传送门 题目大意:给你 n,m n:有几行图,m是一个人最多跳m个曼哈顿距离. 给你两张图,第一张图数字为0表示没有柱子,否则有柱子且只能跳出去 x 次(x为当前字符代表的数字) 第二张图 ...
- dlut1188(wanghang的迷宫)
题目链接:传送门 题目大意:从起点到终点需要最少多少步(必须要关掉所有开关才能出去) 题目思路:用一个3维数组 dp[x][y][t]表示到达当前位置x,y,已经关掉了t个开关走的最少步数,然后就 ...
- python中 将字符串和字典的相互转换
1.首先引入json模块 # 引入json模块 import json 2.转换 #JSON到字典转化: dictinfo = json.loads(json_str) # 输出dict类型 字典到J ...
- to_base64 --- from_base64
UPDATE traceroleid_copy SET Pwd=to_base64(Pwd) SELECT from_base64(Pwd) FROM traceroleid_copy
- java 常用的几个配置
1.保存代码格式化,打勾即可 2.如何让eclipse像vs那样自动提示,在打勾的地方加入 abcdefghijklmnopqrstuvwxyz.即可
- 18.android studio 安装ing
1.首先得FQ,在谷歌中搜索android studio 2.安装时出现的问题. a. 解决方法,重启电脑,进入Bios,找到并将值设置为 :Intel Virtual Technology=Enab ...
- Python图像处理库Pillow入门
http://python.jobbole.com/84956/ Pillow是Python里的图像处理库(PIL:Python Image Library),提供了了广泛的文件格式支持,强大的图像处 ...