【问题标题】:AWS elastic-search. FORBIDDEN/8/index write (api). Unable to write to indexAWS 弹性搜索。禁止/8/索引写入 (api)。无法写入索引
【发布时间】:2017-11-07 02:12:53
【问题描述】:

我正在尝试将文档列表转储到 AWS 弹性搜索实例。它运行良好。然后,它突然开始抛出这个错误:

{ _index: '<my index name>',
  _type: 'type',
  _id: 'record id',
  status: 403,
  error: 
   { type: 'cluster_block_exception',
     reason: 'blocked by: [FORBIDDEN/8/index write (api)];' } }

我查看了论坛。他们中的大多数人说这是一个 JVM 内存问题。如果超过 92%,AWS 将停止对集群/索引的任何写入。但是,当我检查 JVM 内存时,它显示不到 92%。我在这里遗漏了什么?

【问题讨论】:

    标签: amazon-web-services elasticsearch


    【解决方案1】:

    此错误是 Amazon ES 服务主动阻止写入以防止集群达到红色或黄色状态。它使用index.blocks.write 来做到这一点。

    两个原因是:

    Low Memory

    当 JVMMemoryPressure 指标超过 92% 持续 30 分钟时,Amazon ES 会触发保护机制并阻止所有写入操作,以防止集群进入红色状态。开启保护时,写入操作失败并出现 ClusterBlockException 错误,无法创建新索引,并引发 IndexCreateBlockException 错误。

    当 JVMMemoryPressure 指标在 5 分钟内恢复到 88% 或更低时,将禁用保护,并解除对集群的写入操作。

    Low Disk Space

    Elasticsearch 的默认“低水位线”为 85%,这意味着一旦磁盘使用率超过 85%,Elasticsearch 就不再为该节点分配分片。 Elasticsearch 还具有 90% 的默认“高水位线”,此时它会尝试将分片重新定位到其他节点。

    【讨论】:

      【解决方案2】:

      此错误表明 AWS ElasticSearch 已根据磁盘空间在您的域中放置了一个块。在 85% 时,ES 将不允许您创建任何新索引。在 90% 时,无法编写新文档。

      【讨论】:

        【解决方案3】:

        ES 可以在翻转期间对索引应用写入块,或者磁盘空间或内存不足。

        为了阻止这些错误,您需要通过将index.blocks.write 设置为false 来删除索引上的写入块

        curl -X PUT -H "内容类型:应用程序/json" 'http://localhost:9200/{index_name}/_settings' -d '{ "index": { "blocks": { “写”:“假” } } } '

        【讨论】:

          【解决方案4】:

          如果您尝试写入的索引已被标记为只读,也会发生这种情况。由于索引状态管理错误配置导致每周索引在一天后移动到温暖状态,我遇到了这种情况。

          【讨论】:

            猜你喜欢
            • 2023-04-01
            • 1970-01-01
            • 2021-08-01
            • 2015-03-16
            • 2016-10-24
            相关资源
            最近更新 更多