【问题标题】:AWS Elasticsearch scale upAWS Elasticsearch 纵向扩展
【发布时间】:2020-09-15 16:19:32
【问题描述】:

我正在使用 AWS Elasticsearch Service,我收到了很多 es_rejected_execution_exception

根据他们的docs,我们应该提高应用程序的索引性能,添加更多节点或切换到更大的实例类型。

如果我精疲力竭地改进我的应用程序,添加更多节点或切换到大型实例类型哪个更好?

【问题讨论】:

  • 您的弹性搜索指标看起来如何? CPU使用率、平均负载、磁盘读写等
  • CPU 和内存利用率接近 100%。
  • @OpsterElasticsearchNinja 如果我用尽了改进我的应用程序,哪个更好,添加更多节点或切换到更大的实例类型?
  • @CaeVecchi elasticsearch 是一个有状态的应用程序,所以添加新节点并不像无状态应用程序那样简单,这里需要重新分配其他节点上的分片以平衡所有数据节点上的负载,如果您的数据节点 ES 堆大小未超过 31 GB 并且总内存低于 64 GB,并且您的查询更占用内存,则可以向现有节点添加更多 RAM 和一些 CPU,否则您应该使用 HS(添加更多节点)
  • @CaeVecchi 顺便说一句,你应该用你的集群配置(数据节点的数量、它们的 RAM、CPU 和堆大小)和指标(cpu、ram、堆、GC、ES 队列)等来问这个问题这样我就可以根据这些数据点给出更好的解决方案:)

标签: amazon-web-services elasticsearch aws-elasticsearch


【解决方案1】:

首先也是最重要的一点是,es_rejected_execution_exception 是所有 threadpools in ES 的通用异常,并且每当它们的队列容量超过此异常时,AWS 文档给出了 bulk 队列的示例,在简短的描述中提到如es_rejected_execution_exception[bulk] 在异常之后注意bulk

请注意 ES 中有很多线程池,但最重要和最常用的线程池是搜索和写入(在最新版本中,批量调用也使用写入队列)并且您需要仔细查看异常消息以查看哪个队列正在耗尽,以便您知道需要优化什么。

增加队列大小是一个有争议的话题,但如果你有一个瞬间爆发的请求,那么你可以增加队列大小,这在 AWS ES 中也是不可能的:(

你总是可以增加硬件,但你应该找到根本原因,修复它们并优化你的索引和搜索操作,以便它使用更少的硬件并节省 $$$,请参考我对improve search和@的简短提示987654323@

【讨论】:

    猜你喜欢
    • 2020-01-21
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2014-08-29
    • 2021-10-13
    • 2021-03-02
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多