1. 调整内存占用

  1. 修改config/jvm.options里的默认1g增大.自己看情况改。
  1. # Xms represents the initial size of total heap space
  2. # Xmx represents the maximum size of total heap space
  3. -Xms4g
  4. -Xmx4g
  1. 关于用到的垃圾回收器等等,分析gc日志前,建议先默认就可以里.默认也是配置CMSG1这种高效的收集器。

2. 添加设置

修改cofig/elasticsearch.yml:

  1. indices.memory.index_buffer_size: 40%
  2. # 写入线程个数(默认:5*cores数),对应旧版本的bulk.size
  3. thread_pool.write.size: 5
  4. thread_pool.write.queue_size: 1000

3. 修改服务器参数

  1. vi /etc/security/limits.conf

配置如下:

  1. * soft nofile 65536
  2. * hard nofile 65536

调整最大虚拟内存:

  1. vi /etc/sysctl.conf
  1. 追加内容:
  1. vm.max_map_count=655360

注意:需要执行“sysctl -p”生效。
另外,在ES的官方文档上,要求Disabled Swapping,执行“swapoff -a”(临时)。要永久的关闭swapping,需要编辑/etc/fstab文件,将包含swap的行的注释掉。

  1. /dev/mapper/centos-root / xfs defaults 0 0
  2. UUID=6a38540f-2ba9-437b-ac8b-8757f5754fff /boot xfs defaults 0 0
  3. # /dev/mapper/centos-swap swap swap defaults 0 0

4. 动态调整index设置

比如这里的写入调优,可以把刷新时间设置为不刷新:

  1. curl -H "Content-Type: application/json" -XPUT '127.0.0.1:9500/index_name/_settings' -d '{"index" : {"refresh_interval" : "-1" }}'
  1. 设置异步同步磁盘:
  1. # 语法同第一条.就是加参数
  2. "index" : {"translog.durability":"async" }
  1. 还有磁盘刷新的间隔:
  1. index.translog.sync_interval

5. 批量插入

批量插入时一定用bulk批量插入。

参考

博客园:Elasticsearch7.6.*写入调优配置
https://www.cnblogs.com/MyOceansWeb/p/12653965.html