cluster.routing.allocation.same_shard.host:true
这会防止同一个shard的主副本存在同一个物理机上(由于若是存在一个机器上,副本的高可用性就没有了)。
swapping是性能的坟墓
这是显而易见的,可是仍是有必要说的更清楚一点,内存交换到磁盘对服务器性能来讲是致命的。想一想看一个内存的操做必须是快速的。
若是内存交换到磁盘上,一个100微秒的操做可能变成10毫秒,再想一想那么多10微秒的操做时延累加起来。不难看出swapping对于性能是多么可怕。
最好的办法就是在你的操做系统中彻底禁用swapping。这样能够暂时禁用:bootstrap
swapoff -a
为了永久禁用它,你可能须要修改/etc/fstab文件,这要参考你的操做系统相关文档。
若是彻底禁用swap,对你来讲是不可行的。你能够下降swappiness 的值,这个值决定操做系统交换内存的频率。这能够预防正常状况下发生交换。但仍容许os在紧急状况下发生交换。
对于大部分Linux操做系统,能够在sysctl 中这样配置:服务器
vm.swappiness = 1
备注:swappiness设置为1比设置为0要好,由于在一些内核版本,swappness=0会引起OOM(内存溢出)app
简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。能够设为0,这样作并不会禁止对swap的使用,只是最大限度地下降了使用swap的可能性。elasticsearch
经过sysctl -q vm.swappiness能够查看参数的当前设置。性能
修改参数的方法是修改/etc/sysctl.conf文件,加入vm.swappiness=xxx,并重起系统。这个操做至关因而修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改成XXX数值。spa
若是不想重起,能够经过sysctl -p动态加载/etc/sysctl.conf文件,但建议这样作以前先清空swap。操作系统
最后,若是上面的方法都不能作到,你须要打开配置文件中的mlockall开关,它的做用就是运行JVM锁住内存,禁止OS交换出去。在elasticsearch.yml配置以下:内存
bootstrap.mlockall: true