elasticsearch调优checklist-内存

硬件层面:
内存:
大小 :
可在在bin下面的elasticsearch启动文件中设置ES_HEAP_SIZE=10g来指定大小。
如果你的排序和聚合比较多,那么要注意,他们非常的消耗内存,所以我们要分配足够大的内存,64G机器内存是一个理想的配置,但是32和16G的机器也比较常见。小于8G的机器会很麻烦(你最终会需要很多很多机器),当然超过64G也会有一些问题(通常,我们会留50%的内存给lucene,留下30.5G的内存给ES,如果分配给ES过多内存,反而会有不好的表现,在java中,所有的对象都存在于堆,然后由一个指针指向这些对象,这些指针大小通常取决于cpu是32位还是64位,在32位系统,意味着你的内存最大为4G,64位则内存更大,但是超过64bit的指针意味着浪费空间,因为这些指针很大,除此之外,更严重的是,更大的指针在内存和LLC,L1之间移动时将吃掉更多的带宽,java使用压缩指针的方式去避免这个问题,从而能让32位的指针指向约30.5G的内存大小,但是,一旦内存跨过这个边界,指针将会切回非压缩模式,这意味着每个指针变大,而更多带宽被消耗,所以说大于30.5G将不再使用压缩指针,从而会产生一种现象,就是30.5G的效果和40到50G的效果差不多,综上,一旦你大于30.5G,内存会浪费,CPU会变慢,GC也更艰难)。
swap:
1、 一旦使用swap,你的ES表现将大大降低。所以我们通常swap
临时关闭 sudo swapoff -a
永远关闭 需要编辑/etc/fstab文件,请参照你所对应的操作系统
2、如果你不想完全关闭swap,可以系统使用他的阀值,设置sysctl,里面加入vm.swapness=1配置,这样系统在99%内存使用时,才会使用swap,请不要设置为0,设为0则在有的版本系统会被杀掉。
锁定内存,可以在elasticsearch.yml设置bootstrap.mlockall: true来保证JVM锁住内存不让系统做swap操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值