博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ELASTIC SEARCH 性能调优
阅读量:6983 次
发布时间:2019-06-27

本文共 993 字,大约阅读时间需要 3 分钟。

ELASTICSEARCH 性能调优建议

创建索引调优

1.在创建索引的使用使用批量的方式导入到ES。

2.使用多线程的方式导入数据库。

3.增加默认刷新时间。

  默认的刷新时间是1秒钟,这样会产生太多小的SEGMENT,导致未来的合并压力,如果调整这个大小,会导致实时性的降低。

默认1秒钟,就是创建在插入后一秒钟创建索引,如果设置30秒,那么每隔30秒将缓存的数据写一个内存的SEGMENT,让es可以搜索到。

4.在初始导入的时候,禁止刷新和复制。

 如果在需要导入大量数据时,应该禁止刷新,将 index.refresh_interval 刷新间隔设置为-1,并且将复制分片数(index.number_of_replicas)设置为0。

这是会有临时丢失分片数据的的风险,但是创建索引会更快。一旦初始导入完成,需要将index.refresh_interval 和 index.number_of_replicas 设置会原来的值。

5.禁止swap

大多数操作系统会将内存使用到文件系统缓存,会将应用程序未用到的内存交换出去。会导致jvm的堆内存交换到磁盘上。交换会导致性能问题。会导致内存垃圾

回收延长。会导致集群节点响应时间变慢,或者从集群中断开。

临时禁止 swap的方法

swapoff -a

永久禁止的方法

编辑 /etc/fstab 文件,注释所有包含  swap的文件行。

6.将内存分配给文件系统

文件系统缓存被用来文件缓冲操作,应确保运行es的机器一般内存用于文件系统缓存。

7.使用自动产生的D

如果明确指定了文档ID,ES会去检查在相同的分片上是否有冲突的ID,这个会影响索引的性能。

8.使用更快的硬件

使用SSD硬盘,速度会超过机械硬盘。使用本地存储,不要使用远程存储或NFS,SMB等。

9.索引缓冲大小

ES默认的索引缓冲是内存大小的是系统 的10%,如果内存10G,那么1G是分配给ES的索引缓冲的。

10.禁止 _field_names

如果不用来查询,可以禁止 _field_names.

 

查询调优

1.给文件系统增加缓存

需要给一半的内存给文件系统。

2.使用更快的硬件。

3.文档模式调整

建模时:

不要使用嵌套对象或者父子关系建模。

 

转载于:https://www.cnblogs.com/yg_zhang/p/10004216.html

你可能感兴趣的文章
java.lang.ClassNotFoundException
查看>>
关于Console Application引用不到System.Web的问题
查看>>
调用百度翻译API接口功能
查看>>
表设置了自增后往里面插入不自增的id时的处理方法
查看>>
MySQL:MySQL日期数据类型、MySQL时间类型使用总结
查看>>
Proguard打包混淆报错:can't find superclass or interface
查看>>
2014美团笔试之寻找最短子串
查看>>
Open Flash Charts
查看>>
pycharm中不能安装bs4的解决方案
查看>>
我对编程语言选择的理解
查看>>
6.3、Android Studio的CPU Monitor
查看>>
【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用
查看>>
Android 应用开发者必看的 9 个 Tips
查看>>
关于Fragment框架,说的够清晰了。。。
查看>>
批处理写的俄罗斯方块
查看>>
ubuntu下安装加装DNS
查看>>
线性回归——最小二乘法_实例(二)
查看>>
POJ2866:Who Gets the Most Candies?(线段树 + 反素数 + 约瑟夫环)
查看>>
微信支付开发(12) 认清微信支付v2和v3
查看>>
k8s学习笔记之三:k8s快速入门
查看>>