ELASTIC SEARCH 性能调优
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.文档模式调整
建模时:
不要使用嵌套对象或者父子关系建模。
最新文章
- ES6(一)ECMAscript6介绍
- .Net程序员之Python基础教程学习----字符串的使用 [Second Day]
- DDoS deflate+iptables防御轻量级ddos攻击
- js 获取 根目录
- python :列表 字典 集合 类 ----局部变量可以改全局变量
- Oracle自增主键的添加[sequence]--表数据已存在
- bzoj2005: [Noi2010]能量采集
- OVS操作总结
- 在Unity中高效工作(下)
- 用java模拟银行柜台排队
- 高频(工作频率为13.56MHz)
- iot 表 主键索引叶子块包含了表所有数据
- maven项目如何跳过某些junit test,或者指定执行部分junit test
- 写过的一些shell脚本总结
- PGM:图模型学习概述
- 【一天一道LeetCode】#10. Regular Expression Matching
- BZOJ_3687_简单题_bitset
- mysql_变量
- 十分钟内在Ubuntu系统上搭建Mono开发环境(Mono软件Ubuntu系统国内镜像源、Mono国内镜像源)
- C#简单的四位纯数字验证码