原文地址:https://www.elastic.co/guide/en/elasticsearch/guide/current/_java_virtual_machine.html
JAVA虚拟机
您应该永远将Elasticsearch运行在最新的Java虚拟机(JVM)上,除非在Elasticsearch网站上有特殊说明。Elasticsearch,特别是lucene,是要求较高的软件。lucene的单元测试和集成测试经常会暴露出JVM中的bug。这些bug从轻微的问题到严重的错误都有,所以尽可能使用最新版本的JVM。
与比java6相比,java7是强烈推荐的。Oracle或OpenJDK都可以,他们在性能和稳定性上比较相近。
如果您的应用是用java编写的,并且您使用了transport客户端或node客户端,请确保服务器的JVM和您应用的JVM是一致的。在Elasticsearch中的某些地方,使用了java的本地序列化(IP地址,异常等等)。不幸的是,Oracle在小版本间改变了序列化的格式,这会导致奇怪的错误。这很少会发生,但是最好的办法就是保持客户端和服务器间的JVM版本一致。
请不要调整JVM的设置
JVM暴露出很多(甚至上百)的设置、参数和配置。他们允许您在JVM的每个层面去调整和优化。
当遇到一个按钮时,人们的自然反应就是想去旋转它。我们恳求您压制这个欲望,并且不要使用自定义的JVM设置。Elasticsearch是一个复杂的软件,并且目前的JVM设置调优已经经过多年的使用检验。
开始旋转这个按钮是容易的,但是产生的作用却很难估计,甚至会使集群变慢,变得不稳定。当调试集群时,第一步通常是去除所有的自定义配置。大约一半的时间,都是在恢复稳定性和性能。