在网上搜索查询发现清一色的都是说undertow高并发性能优于tomcat,并且还提供了各种实验依据以作证明,但是我私下测试发现情况和网上大部分结果并不一致。
简单接口测试
代码语言:javascript复制 @GetMapping("/test")
public String test() {
return UUID.randomUUID().toString();
}
这是第一次测试的接口,使用jemter
每秒600个线程调用这个接口。
Tomcat
cpu最高点稳定在40%,吞吐量能达到7万。
Undertow
cpu高点接近60%,吞吐量4万6。
Jetty
cpu高点在50%,吞吐量达到5万。
结论
在简单接口中,发现tomcat
对于cpu
的占用是最低的,而且吞吐量最高。另外jetty
停止测试花费了最长的时间导致吞吐量变低。
简单接口下吞吐量:tomcat
>jetty
>undertow
。
cpu:tomcat
>jetty
>undertow
。
复杂接口测试
Tomcat
cpu高点在45%左右,吞吐量2万3。
Undertow
cpu高点在50%,吞吐量2万2。
Jetty
cpu高点在60%,吞吐量2万。
结论
在稍复杂的接口测试下,tomcat
和underwow
的差距并没有很大,但是tomcat
在吞吐量和cpu方面依然占据了稍小的优势,jetty
与前两者存在差距。
复杂接口下吞吐量:tomcat
>undertow
>jetty
。
cpu:tomcat
>undertow
>jetty
。
从结果来看,tomcat
依然是最稳定的服务器,而不是网上各种博主说的undertow
更优。而jetty
更适合长连接的服务,但是长连接我更倾向于选择netty
。undertow
更适合用于IO密集型服务器,或者文件服务器使用undertow
会是一个不错的选择,但是在一般情况下还是老老实实的使用Springboot默认的tomcat
吧。