web-dev-qa-db-ja.com

Javaアプリケーションは仮想サーバー(KVM)で遅い

Java Webアプリケーションがあります。これはJARから実行され、組み込みTomcatを起動し、SpringBootを使用しています。

問題は、KVM仮想ゲストで実行すると実行が非常に遅くなることです。同じJDK(Java(TM) SE Runtime Environment (build 1.8.0_72-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)内の同じアプリケーションがベアメタルで8秒、ただし40秒で起動しています。仮想化システムの場合。両方のOSはUbuntu15.10(カーネル4.2.0-27-generic)です。これは問題を開始するだけでなく、アプリケーションはすべてのHTTP要求に対して非常に遅延応答します。

SecureRandomに関するJava設定を変更しようとしましたが、何も変更されていません。

-Djava.security.egd=file:///dev/urandom

仮想ゲストのSecureRandomおよびランダムエントロピー: https://security.stackexchange.com/questions/14386/what-do-i-need-to-configure-to-make-sure-my-software-uses- dev-urandom

https://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-Java-securerandom

しかし、それは私を助けませんでした。他に推奨事項はありますか、どうすればよいですか?ありがとうございました。

私の仮想ホストは、たくさんのRAM、SSDを備えた新しいサーバーです。したがって、ハードウェアの問題はないと確信しています。他のKVM仮想ゲストも実行していて、まったく問題はありません。遅いJavaアプリケーションでのみ。

2
Xdg

アプリケーションがSecureRandomを使用している場合は、最初のシードに十分なエントロピーが存在するように、havegedなどのランダムエントロピージェネレーターをインストールする必要がある場合があります。

VMには、エントロピーの収集に問題があります。

仮想サーバーはエミュレートされた環境で実行されており、「実際の」ハードウェアへのアクセスはほとんどありません。従来のコンピューターがハードウェアから取得するランダムデータは、エミュレートされた仮想ハー​​ドウェアでは発生しないため、エントロピーの主要なソースは存在しません。

ソース

これにより、少なくとも、初めて使用するときのパフォーマンスが向上することが期待されます。

3
AlexB