9

在网上搜索查询发现清一色的都是说undertow高并发性能优于tomcat,并且还提供了各种实验依据以作证明,但是我私下测试发现情况和网上大部分结果并不一致。

简单接口测试

   @GetMapping("/test")
   publicStringtest() {
       returnUUID.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万。

结论

在稍复杂的接口测试下,tomcatunderwow的差距并没有很大,但是tomcat在吞吐量和cpu方面依然占据了稍小的优势,jetty与前两者存在差距。

复杂接口下吞吐量:tomcat>undertow>jetty

cpu:tomcat>undertow>jetty

从结果来看,tomcat依然是最稳定的服务器,而不是网上各种博主说的undertow更优。而jetty更适合长连接的服务,但是长连接我更倾向于选择nettyundertow更适合用于IO密集型服务器,或者文件服务器使用undertow会是一个不错的选择,但是在一般情况下还是老老实实的使用Springboot默认的tomcat吧。


我的小熊不见了
1.6k 声望4.3k 粉丝