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
    评论
Elasticsearch是一个强大的分布式搜索引擎,但是当数据量增大的时候,查询速度可能会变慢。以下是一些Elasticsearch高级调优方法: 1. 确保集群健康:检查集群健康状态,确保没有节点离线或者故障。可以通过curl命令或者Kibana控制台来查看集群健康状态。 2. 调整JVM堆大小:Elasticsearch运行在Java虚拟机上,通过调整JVM堆大小可以提高查询性能。一般来说,建议将JVM堆大小设置在服务器物理内存的一半左右。 3. 合理使用分片和副本:Elasticsearch支持水平分片和副本,但是如果分片和副本设置不合理,会影响查询性能。建议在索引的创建阶段考虑好分片和副本的数量,避免在后期修改。 4. 优化查询语句:优化查询语句可以提高查询性能。例如,使用过滤器代替查询语句、使用精确值查询代替模糊查询等。 5. 避免全文检索:全文检索是Elasticsearch的特色功能,但是如果不需要全文检索,可以使用精确值查询或者过滤器代替全文检索,从而提高查询性能。 6. 优化文档结构:优化文档结构可以提高查询性能。例如,将经常查询的字段存储在_doc字段中,避免频繁访问磁盘。 7. 合理配置缓存:Elasticsearch支持各种缓存,如查询缓存、过滤器缓存等。合理配置缓存可以提高查询性能。 8. 监控系统性能:监控Elasticsearch集群的性能,及时发现问题并进行调整。可以使用Elasticsearch自带的监控工具或者第三方监控工具。 以上是一些Elasticsearch高级调优方法,希望对你有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值