我最近将一些计划作业从Windows Server 2012虚拟服务器迁移到了新的Windows Server 2019虚拟服务器,并注意到某些作业的性能明显下降。特别是使用AS 400 JDBC连接池数据源与我们的DB2数据库通信的作业。数据库托管在IBM iSeries AS/400上。
在Windows Server 2019上,使用jdk1.8.0_131,我正在运行以下命令:
java -jar myproject.jar
这个项目只需要连接到DB2数据库并执行SQL更新命令。在其他服务器上,同样的命令需要大约2. 5分钟,但在Windows Server 2019上,它需要15分钟到一个多小时。我在作业运行时监控了服务器和数据库上的CPU、RAM和网络活动,下面是在各种操作系统和JDK上的测试结果:
| Server | JDK | Runtime |
|-------------------------------------|-----------|-----------------------|
| Windows Server 2012 | 1.8.0_131 | ~2.5 minutes |
| Windows Server 2016 (Fresh Install) | 1.8.0_131 | ~2.5 minutes |
| Windows Server 2019 (Production) | 1.8.0_131 | 15 minutes to an hour |
| Windows Server 2019 (Fresh Install) | 1.8.0_131 | 15 minutes to an hour |
| Windows Server 2019 (Fresh Install) | 1.8.0_202 | 15 minutes to an hour |
如上所示,我尝试了全新安装的Server 2016,没有遇到性能问题,但当我尝试全新安装的Windows Server 2019时,我能够复制性能下降。
这些虚拟服务器都具有相同数量的CPU和RAM,并且在同一主机上运行。
2条答案
按热度按时间aurhwmvo1#
Java仅支持1.8.0_201之后的Server 2019。
https://www.oracle.com/java/technologies/javase/products-doc-jdk8-jre8-certconfig.html
zqry0prt2#
这是由于Windows 2019网络算法中的更改所致。您可以通过将“TcpNoDelay”属性设置为true来禁用此行为。
https://sourceforge.net/p/jt400/bugs/454/