elasticsearch中java的最小内存和最大内存,官方建议设置为同样的,这样能够因为内存调整形成的长GC发生。
固然内存大小不要超过32G,html
参考http://zhaoyanblog.com/archives/744.htmljava
其次elasticsearch还有一个重要的参数bootstrap.mlockall,这个参数的目的是当你没法关闭系统的swap的时候,建议把这个参数设为true。防止在内存不够用的时候,elasticsearch的内存被交换至交换区,致使性能骤降。linux
参考http://zhaoyanblog.com/archives/744.htmlbootstrap
建议即使你关闭了系统的swap,也把bootstrap.mlockall设为trueelasticsearch
bootstrap.mlockall的做用就是在程序启动的时候先去获取足够大的内存,再加入集群接收请求。没有bootstrap.mlockall的话,elasticsearch一启动就会发现集群接入集群,接收请求,而后JVM一点点的获取系统内存,直到指定值。性能
若是你有足够大的内存还好,若是没有足够大的内存,由于了elasticsearch引用文件会,系统内存会大量用于系统cache(linux的内存管理机制)。htm
从程序启动直到JVM获取到指定大小的内存,可能因为系统cache释放缓慢,而致使这个过程很是长,这有可能使你的节点GC很是频繁,从而致使集群不稳定。blog
因此强烈建议把bootstrap.mlockall设为true,这个值设为true,可能会让节点启动的时候比较慢,可是保证了节点加入集群后的稳定性。内存