9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS OpenSearch ( Elastic Search )で429エラー多発の原因と対処

Last updated at Posted at 2022-04-13

はじめに

AWS OpenSearch(ElasticSearch)でError 429 (Too Many Requests)が大量に発生してかなり困ったので、原因と対処方法についてのメモ。

前提条件

HTTP 429 エラーに対しては、アプリケーションで再送ロジックを組み込んでおくことが推奨されています。低頻度の429エラーは再送で対処したほうが良いです。

429エラー多発時のメトリクスについて

HTTP429の問題発生時に、下記のメトリクスに異常値が見られました。症状が同じであれば、本対策で解消する可能性があります。

  • ThreadpoolWriteRejected Maximum
    ThreadpoolWriteRjectedのメトリクスが急増していました。標準のメトリクスなのでCloudwatchから確認できます。
    スクリーンショット 2022-04-13 19.19.25.png

  • WriteIOPS/ReadIOPS
    過去日比較でかなり高い値を継続的に推移していました。ただし、問題発生と同時刻に異常があったわけではなく、直接問題と紐づけるのは難しいです。

  • 他のメトリクスには特に目立った異常はなかったです。

原因

AWS OpenSearch(ElasticSearch)のデータノードに使っているEBSのIOPS不足です。EBSは、ボリュームサイズに対して3IOPS/GiBのベースライン性能(gp2の場合)がありますが、バースト可能なのでIOPSを超過しても即時問題にはなりません。また、本記事の掲載時点ではOpenSearch(ElasticSearch)のEBSがバースト超過していることを示すメトリクスが存在しません。よって、バースト性能を含めたEBSのIOPS超過が原因であるとすぐに特定することはちょっと難しいと思います。
WriteIOPS+ReadIOPSの値が、設定しているEBSのベースライン性能を大きく超えていた場合は、これが原因であることを疑ってみると良いと思います。

対処

OpenSearch(ElasticSearch)のEBSボリュームタイプを、汎用(SSD)からプロビジョンドIOPS(SSD)に変更し、適切なIOPSを設定しました。
スクリーンショット 2022-04-13 19.46.19.png

どの程度IOPSが必要かについては、WriteIOPSおよびReadIOPSのメトリクスを確認すれば良いです。WriteIOPSとReadIOPSを合算した値を加味して、EBSのIOPSを決める必要があります。
スクリーンショット 2022-04-13 19.30.56.png

EBSボリュームタイプの変更、プロビジョンドIOPSの値の変更は、Blue/Green デプロイが適用されるため、基本的にはダウンタイムなしで適用可能です。

AWS OpenSearch(ElasticSearch)のEBSには、プロビジョンドIOPSでシステムに適切なIOPSを設定しておくことがおすすめ

その後の監視について

WriteIOPSとReadIOPSの合算値に対して、Cloudwatchアラートを設定しました。プロビジョンドIOPSを1000とした場合、例えば800、900などを閾値としたアラートを設定しておけば問題発生前に気付き、EBSのIOPSを増やす対処が可能だと思います。

スクリーンショット 2022-04-13 20.11.12.png

WriteIOPS/ReadIOPSメトリクスに対してアラーム設定しておくのがおすすめ

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?