Java 8与Java 21网络流量性能下降原因及优化方案问询
高负载网络应用Java版本迁移性能问题排查与解决
问题背景
我们维护一款以高负载网络流量为核心的应用,基于Java 8稳定运行多年,服务器常规需处理高达700 MBit/s的流量。计划迁移至Java 21时发现性能明显逊于Java 8,进一步测试验证:Java 13性能与Java 8持平,但Java 14及之后版本均出现性能下滑。
问题复现
搭建了包含SenderReceiverBenchmark主类、Sender、Receiver及Statistics模块的测试用例,复现步骤如下:
- 启动Receiver监听端口4711
- Sender以300个连接、每50ms发送128KB数据的压力模型发起请求
测试结果显示:Java 21的CPU占用比Java 8高出10%-15%。
多环境验证
在不同CPU架构、操作系统、JDK发行版的环境中重复测试,该性能下降现象在部分环境中可稳定复现。
解决方案
参考JEP 353的指引,将应用中原线程池替换为Executors.newVirtualThreadPerTaskExecutor()后,Java 21的性能反超Java 8,同时系统平台线程数大幅降低。
内容的提问来源于stack exchange,提问作者Christoph Weser
相关产品推荐
相关产品推荐

