我有一个 Java Web 应用程序,它从 JAR 运行,启动嵌入式 Tomcat 并使用 Spring Boot。
问题是在 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 秒。两个操作系统都是 Ubuntu 15.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 应用程序。
如果您的应用程序使用 SecureRandom,您可能需要安装一个随机熵生成器,
haveged
以便为初始种子提供足够的熵。虚拟机在收集熵时遇到问题。
资源
这至少有望在第一次使用时提高性能。