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.文档模式调整

建模时:

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

最新文章

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

热门文章

  1. vue 父子组件相互传参
  2. TOJ 2778 数据结构练习题――分油问题(广搜和哈希)
  3. win静态库动态库
  4. c# dev treelist 总结
  5. mybatis入门--初识mybatis
  6. Junit4知识梳理
  7. Maven的conf目录下settings.xml的简单配置
  8. Github远程仓库关联
  9. kdump 调试手段
  10. c sharp dll