AWS эластичный поиск. FORBIDDEN/8/index write (api). Не удалось записать в индекс

Я пытаюсь сбрасывать список документов в экстренный поиск 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%. Я что-то упустил?

Благодарю.

Ответ 1

Эта ошибка заключается в том, что служба Amazon ES активно блокирует записи, чтобы защитить кластер от достижения красного или желтого статуса. Он делает это с помощью index.blocks.write.

Две причины:

Мало памяти

Когда метка JVMMemoryPressure превышает 92% в течение 30 минут, Amazon ES запускает механизм защиты и блокирует все операции записи, чтобы предотвратить крах статуса кластера. Когда защита включена, операции записи не выполняются с ошибкой ClusterBlockException, новые индексы не могут быть созданы, и возникает ошибка IndexCreateBlockException.

Когда метрика JVMMemoryPressure возвращается на 88% или ниже в течение пяти минут, защита отключается, а операции записи в кластер разблокируются.

Недостаточно места на диске

У Elasticsearch есть "низкий водяной знак" по умолчанию, равный 85%, что означает, что, когда использование диска превышает 85%, Elasticsearch больше не выделяет осколки этого узла. У Elasticsearch также есть "высокий водяной знак" по умолчанию 90%, и в этот момент он пытается переместить осколки в другие узлы.

Ответ 2

Эта ошибка указывает, что AWS ElasticSearch разместил блок в вашем домене на основе дискового пространства. При 85% ES не позволит создавать новые индексы. На 90% новых документов не может быть написано.

Ответ 3

Хорошо. Теперь он начал работать через ~ 24 часа. Я не уверен, что происходит. Почему это заняло столько времени? AWS должна предоставить больше информации об тексте ошибки, который они возвращают клиентам.