最近、いくつかのスケジュールされたジョブを Windows Server 2012 仮想サーバーから新しい Windows Server 2019 仮想サーバーに移行しましたが、特定のジョブのパフォーマンスが著しく低下していることに気付きました。特に、AS400 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 分から 1 時間以上かかります。ジョブの実行中にサーバーとデータベースの CPU、RAM、およびネットワーク アクティビティを監視しましたが、特に目立ったものはありません。以下は、さまざまなオペレーティング システムと JDK でのテストの結果です。
| | サーバー | JDK | ランタイム | |-------------------------------------|----------- | -----------------------| | | Windows サーバー 2012 | 1.8.0_131 | ~2.5 分 | | | Windows Server 2016 (新規インストール) | 1.8.0_131 | ~2.5 分 | | | Windows Server 2019 (製品版) | 1.8.0_131 | 15分から1時間 | | | Windows Server 2019 (新規インストール) | 1.8.0_131 | 15分から1時間 | | | Windows Server 2019 (新規インストール) | 1.8.0_202 | 15分から1時間 |
上記のように、サーバー 2016 の新規インストールを試してみたところ、パフォーマンスの問題は発生しませんでしたが、Windows Server 2019 の新規インストールを試したところ、パフォーマンスの低下を再現できました。
これらはすべて、同じ量の CPU、RAM を備え、同じホスト上で実行される仮想サーバーです。