前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记多次腾讯云 ES 集群排障和参数调优

记多次腾讯云 ES 集群排障和参数调优

原创
作者头像
shanizeng
修改2020-12-02 21:13:51
2K0
修改2020-12-02 21:13:51
举报

腾讯云 ES 目前提供了自定义 yml 配置。其中 indices.fielddata.cache.size 和 indices.query.bool.max_clause_count 支持通过界面修改,其他参数需要自己传入,每次的配置修改都需要重启集群后生效。针对一些集群常见问题,可通过调整参数来解决。以下案例仅针对腾讯云现阶段支持的自定义参数。

集群熔断

现象

十个集群有八个熔断,还有两个正在熔断的边缘试探。日志中较为常见的报错:

代码语言:javascript
复制
Data too large, data for [<transport_request>] would be [16913285988/15.7gb]
代码语言:javascript
复制
pressure too high, (smooth) bulk request circuit break

腾讯云 ES 中导致熔断的原因通常是 jvm old 区负载较高,当使用率超过85%时开始写拒绝,使用率超过90%时开始读拒绝。

解决方案

  1. 清理 fielddata cache
代码语言:javascript
复制
GET /_cat/indices?v&h=index,fielddata.memory_size&s=fielddata.memory_size:desc
POST /${fielddata占用内存较高的索引}/_cache/clear?fielddata=true

2.调整参数

修改 indices.fielddata.cache.size 参数

这个参数限制分配的 fielddata 堆空间大小,单位%,默认为15%。为避免有过多 fielddata 堆积导致占用 jvm old,可适当调小此参数。

和集群索引熔断相关的参数还有 accounting_requests,inflight_requests 的限制等。但目前腾讯云 ES 暂不支持此类参数的自定义修改。

bulk 拒绝

当集群出现 bulk 拒绝时,通常都是因为 queue 线程池满了,queue 默认值为1024。

现象

代码语言:javascript
复制
 {"reason":"rejected execution of org.elasticsearch.transport.TransportService$7@5436e129 on EsThreadPoolExecutor[bulk, queue capacity = 1024, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@6bd77359[Running, pool size = 12, active threads = 12, queued tasks = 2390, completed tasks = 20018208656]]","type":"es_rejected_execution_exception"}

解决方案

1.优化集群索引分片

保证索引主分片和副本数之和为节点数的整数倍,并且单分片 size 保持在50G 以内

2.调整参数

修改 thread_pool.write.queue_size、thread_pool.search.queue_size 参数

两者分别对应文档的写入队列参数和文档的查询队列参数,缺省值都为1024。当出现线程池满的情况,可针对这两个值进行适当调大,但增大线程池的同时也会带来集群 CPU 和 内存的消耗,因此调大线程池只适用于短时间内出现读写突增情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 集群熔断
    • 现象
      • 解决方案
      • bulk 拒绝
        • 现象
          • 解决方案
          相关产品与服务
          Elasticsearch Service
          腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档