Elasticsearch的Best Practice:把bootstrap.mlockall设为true

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,可能会让节点启动的时候比较慢,但是保证了节点加入集群后的稳定性。

留言

提示:你的email不会被公布,欢迎留言^_^

*

验证码 * Time limit is exhausted. Please reload CAPTCHA.