我正在尝试将文档列表转储到AWSelasticsearch实例。运行良好。然后,突然间它开始抛出此错误:
{ _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 ES服务主动阻止写操作以保护集群避免达到红色或黄色状态。它使用进行此操作index.blocks.write。
index.blocks.write
两个原因是:
记忆不足
当JVMMemoryPressure指标在30分钟内超过92%时,Amazon ES触发保护机制并阻止所有写入操作,以防止群集达到红色状态。启用保护后,写入操作将失败,并出现ClusterBlockException错误,无法创建新索引,并引发IndexCreateBlockException错误。 当JVMMemoryPressure指标在五分钟内恢复到88%或更低时,该保护将被禁用,并且对集群的写操作将被取消阻止。
当JVMMemoryPressure指标在30分钟内超过92%时,Amazon ES触发保护机制并阻止所有写入操作,以防止群集达到红色状态。启用保护后,写入操作将失败,并出现ClusterBlockException错误,无法创建新索引,并引发IndexCreateBlockException错误。
当JVMMemoryPressure指标在五分钟内恢复到88%或更低时,该保护将被禁用,并且对集群的写操作将被取消阻止。
磁盘空间不足
Elasticsearch的默认“低水印”为85%,这意味着一旦磁盘使用率超过85%,Elasticsearch将不再为该节点分配碎片。Elasticsearch的默认“高水位标记”为90%,这时它将尝试将碎片重新定位到其他节点。