Amazon Elasticsearch Serviceでcluster_block_exceptionがでたら

  • 0
    Like
  • 0
    Comment

    症状

    こんなエラー。
    読み込みは出来るが、書き込みやインデックス作成は全て失敗するようになる。

    "error": {
      "type": "cluster_block_exception",
      "reason": "blocked by: [FORBIDDEN/8/index write (api)];"
    }
    
    "error": {
      "type": "index_create_block_exception",
      "reason": "blocked by: [FORBIDDEN/10/cluster create-index blocked (api)];"
    }
    

    原因と対策

    原因は主に2つある模様。

    ディスク容量不足

    AmazonESのメトリックスでFreeStorageSpaceを見ると0になっているはず。
    インスタンスタイプかEBSの容量を上げればいいはず。

    Amazon ES ドメインの設定 - AmazonES 開発者ガイド
    EBS ベースのストレージの設定 - AmazonES 開発者ガイド

    メモリ容量不足

    AmazonESのメトリックスでJVMMemoryPressureが92%を超えているはず。
    超えているというか92%をキープしている。

    スクリーンショット 2017-06-20 14.35.10.png

    t2特有の現象というわけでなく他のインスタンスタイプでも同じことが起きたので、単純にスケールアップしてメモリ増やせということだと思う。
    この状態でもClusterHealthは青いままなので要注意。
    JVMMemoryPressureは監視対象にしたほうがよさそう。

    参考

    AWS サービスエラー処理 - AmazonES 開発者ガイド
    elasticsearchを利用するときは容量を管理しようという話 - Qiita