elasticsearch中java的最小内存和最大内存,官方建议设置为一样的,这样可以由于内存调整造成的长GC发生。
当然内存大小不要超过32G,
参考http://zhaoyanblog.com/archives/744.html
其次elasticsearch还有一个重要的参数bootstrap.mlockall,这个参数的目的是当你无法关闭系统的swap的时候,建议把这个参数设为true。防止在内存不够用的时候,elasticsearch的内存被交换至交换区,导致性能骤降。
参考http://zhaoyanblog.com/archives/744.html
建议即便你关闭了系统的swap,也把bootstrap.mlockall设为true
bootstrap.mlockall的作用就是在程序启动的时候先去获取足够大的内存,再加入集群接收请求。没有bootstrap.mlockall的话,elasticsearch一启动就会发现集群接入集群,接收请求,然后JVM一点点的获取系统内存,直到指定值。
如果你有足够大的内存还好,如果没有足够大的内存,因为了elasticsearch引用文件会,系统内存会大量用于系统cache(linux的内存管理机制)。
从程序启动直到JVM获取到指定大小的内存,可能由于系统cache释放缓慢,而导致这个过程非常长,这有可能使你的节点GC非常频繁,从而导致集群不稳定。
所以强烈建议把bootstrap.mlockall设为true,这个值设为true,可能会让节点启动的时候比较慢,但是保证了节点加入集群后的稳定性。
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/826.html