在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

ES 生产JVM堆内存 优化问题

Elasticsearch | 作者 JayLinn | 发布于2021年09月01日 | 阅读数:1567

小弟有个生产的疑问跟想法想问一下大佬们:
  • 背景:有一个log的集群,规模大概是84TB,7,387 shards,950 indices 增量大概是300GB差不多,我们的场景总会有某一些时刻写入量是特别大的,比如说索引速率大概是3000W(平常5W左右),这个时候就老是会导致集群中的一节或者某几台节点重启。
  • 配置 是节点16C 32G(统一)
  • 角色安排是这样[list][*]"nodes" : {
  • "count" : {
  • "total" : 18,
  • "coordinating_only" : 0,
  • "data" : 15,
  • "ingest" : 15,
  • "master" : 3
  • }

[/*]
[*]我们对JVM堆内存的设置,有一两台节点是设置8G,其余的都是16GB,其余的都是用于堆外内存,这个现象好像是堆内存head不够用了所以才导致这种现象。现在就是能不能不通过无脑升级配置的方式去做一些调优的工作。[/*]
[*]我目前能想到的就是:
  • 1.堆内存从16GB 调整到 24GB
  • 2.refresh_interval = 5 和 flush的频率调整到更高一点
  • 3.事务日志持久性模式translog.durability 设置async
  • 其实的就暂时想不到有啥优化方案了。

[/*]
[/list]
已邀请:

Charele - Cisco4321

赞同来自:

要看报错日志信息来判断的吧。
 
再说了,如果真是oom,你调别的也没用啊,

spoofer

赞同来自:

我觉得你的优化思路是对的。
1、translog.durability=async,还可以设置translog.sync_interval来加大translog的刷盘时间间隔,并且设置translog.flush_threshold_size的大小(默认512M),超过这个大小会导致refresh操作~~
2、调整一下段合并的策略和线程数
3、indexing buffer 是否可以增加?
 

要回复问题请先登录注册