他のお客様が時間のかかるクエリを実行している場合でも、お客様のREST APIコールに迅速に対応するために、New RelicはAPIにオーバーロード保護機能を搭載しています。
膨大なリソースを消費するほど大量のデータを照会している場合、APIのレスポンスコードとヘッダーには、お客様のAPIキーで利用可能な容量を超えたことが示されます。これは、ほとんどのお客様が目にすることのない稀な状態です。APIを非常に多くのリソースを消費する状態で使用しているお客様のみがこの状態になります。
お客様は、1分間に1000回のAPIコールに制限されます。
APIレスポンス
通常の運用では、APIはレスポンスに過負荷保護ステータスを付加しません。お客様は何もする必要はありません。
reporting period時間間隔にわたって、New Relic は各 API リクエストがシステムに与える影響を追跡します。
これらは、過負荷保護やレート制限のトリガーとなる典型的なケースです。
- 使用しているAPIキーが、1分間の最大リクエスト数を超えました。
- 私たちのシステムは全体的に負荷が高く、いくつかのアカウントがレポートを減少させる必要があります。
レートリミッターがかかった場合、以下のようになります。
- さらにAPIを呼び出すと、HTTPステータスコード429(リクエストが多すぎる)で失敗します。
- HTTPレスポンスのヘッダとボディには、エラーに関する詳細な情報が含まれている場合もあれば、含まれていない場合もあります。
- 報告期間終了後、再びAPIコールが許可されます。
ヘッダー
APIキーの個別制限を超えた場合に、APIレスポンスに表示されるHTTPヘッダーを以下に示します。
オーバーロードヘッダ | 意味 |
---|---|
| 1分間の最大リクエスト数 |
| この期間に残っているリクエストの数 |
| 現在の報告期間が終了するUNIXタイムスタンプ(1970年1月1日からの秒数)。APIリクエストは、この時間以降に応答されます。 |
| このドキュメントにハイパーリンクを貼ることで、すぐに追加情報を得ることができます。 |
一般的なシステム上の問題が発生した場合に、APIレスポンスに表示されるHTTPヘッダは以下の通りです。
オーバーロードヘッダ | 意味 |
---|---|
| 再試行するまでの秒数 |
例
以下は、呼び出し元が利用可能なリソースをすべて消費したことを示すAPIリクエストの例であり、2016年2月1日正午にさらなるAPIコールが再び許可されることを示しています。
curl -X GET 'https://api.newrelic.com/v2/applications.json' \
-H "Api-Key:$API_KEY" -i
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
...
X-RateLimit-Docs: https://docs.newrelic.com/docs/apis/rest-api-v2/requirements/api-overload-protection-preventing-429-errors
X-RateLimit-Reset: 1454313600
X-RateLimit-Remaining: 0
X-RateLimit-Limit: 1000
{}
レートリミッターエラーの防止
429エラーが発生した場合の最も簡単な対処法は、レポート期間が終了するまで待ってから次のAPIリクエストを送信することです。しかし、クエリを慎重に管理することで、過負荷保護エラーを未然に防ぐことができます。
多くのリソースを必要とするクエリを送信することがわかっている場合は、以下のような予防策を講じることができます。
- 特に、1分間に1回(エージェントデータの更新レート)よりも少ない頻度でクエリを送信してください。
- New Relicからのデータをキャッシュすることで、毎回APIからリクエストする必要がなくなります。
- メトリック名と出力結果を複数のページで要求する必要がある場合は、カーソルベースの手法 を使用してください。