ES7.X写入过程原理及写入优化具体步骤

本文深入解析Elasticsearch写入流程,包括refresh、flush、段合并等关键步骤,并提供写入性能优化策略,如调整刷新间隔、段合并优化、索引缓冲区设置等。
Elasticsearch写入数据原理

首先,客户端接收写入请求,将请求路由到其中的一个node下的一个分片(随机轮询算法)。
一。refresh:数据打入buffer,再打入os cache(此时已经可以访问),再写入一个segmentfile。一个过程称之为refresh。当写入完成buffer清空,默认1s一次。
二。flush:数据不仅打入buffer,也记录在tranlog,但每次buffer数据清空,tranlog不清空。tranlog积攒5秒(默认)后,执行flush。 flush第一步 refreshbuffer。第二步,建立commit point写入磁盘 。第三步。os cache强刷进入磁盘。(有java rest api可以控制flush,也就是控制刷盘操作)。
三。段合并
定期段合并 将每个refresh产生的segmentfile合并,将合并后segment file写入磁盘,也写入一个commit point。将之前segment file标记del之后物理删除。
四。注意:tranlog写入os cache那5秒。数据在buffer,tranlog os cache,以及buffer refresh写入的segment file里。并未持久化,所以此时宕机会导致5秒的数据丢失。

ES集群写入优化原理

一。加大tranlog的flush间隔,降低iops和写阻塞:

   默认index.translog.durability: request
  修改为index.translog.durability: async
  同时设置index.translog.sync_interval: 20s
  也就是刷盘周期。默认刷盘周期5s。不可设置低于100毫秒。
  同时因为加大了flush时间,导致tranlog增大,则应该增加
  tranlog阈值。
  index.translog.flush_threshold_size: 1024mb
  最大1024默认512,不可超越1024,因为会导致refresh从
> @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! > Someone could be eavesdropping on you right now (man-in-the-middle attack)! > It is also possible that a host key has just been changed. > The fingerprint for the ED25519 key sent by the remote host is > SHA256:yswdgtshuc+hy/m0jR576i7Nu0Es7lZ71jIrFKXnkE0. > Please contact your system administrator. > Add correct host key in C:\\Users\\ASUS/.ssh/known_hosts to get rid of this mess > age. > Offending ECDSA key in C:\\Users\\ASUS/.ssh/known_hosts:11 > Host key for [connect.nmb1.seetacloud.com]:31449 has changed and you have reques > ted strict checking. > Host key verification failed. > 过程试图写入的管道不存在。 [23:24:39.607] "install" terminal command done [23:24:39.608] Install terminal quit with output: 过程试图写入的管道不存在。 [23:24:39.608] Received install output: 过程试图写入的管道不存在。 [23:24:39.608] WARN: $PLATFORM is undefined in installation script output. Errors may be dropped. [23:24:39.609] Failed to parse remote port from server output [23:24:39.610] Resolver error: Error at y.Create (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:744751) at t.handleInstallOutput (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:742832) at t.tryInstall (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:865534) at async c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:824246 at async t.withShowDetailsEvent (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:827501) at async A (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:820760) at async t.resolve (c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:824898) at async c:\Users\ASUS\.vscode\extensions\ms-vscode-remote.remote-ssh-0.120.0\out\extension.js:2:1113660 [23:24:39.615] ------ [23:24:39.616] No hints found in the recent session.
最新发布
07-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值