レート制限でインスタンスの安定性を改善する
自動化された連携やスクリプトが Jira に大量のリクエストを送信すると、Jira の安定性に影響を与え、パフォーマンスの低下やダウンタイムにつながる恐れがあります。レート制限を使用すると、ユーザーや自動化機能が送信可能な外部 REST API リクエストの数と頻度を制御し、Jira インスタンスが安定した状態を保つようにできます。
Rate limiting is available for Jira Software Data Center and Jira Service Management Data Center.
次のセクションにジャンプ
レート制限の仕組み
Jira でのレート制限の仕組みの詳細についてご説明します。
レート制限を有効化する方法
レート制限を有効化するには、Jira システム管理者である必要があります。
レート制限を有効化するには、次の手順を実行します。
Jira で、[管理] > [システム] > [レート制限] に移動します。
ステータスを [有効] に変更します。
次のオプションのうち 1 つを選択します: 無制限のリクエストを許可、すべてのリクエストをブロック、またはリクエストを制限。最初のオプションと 2 番目のオプションは許可リストとブロックリストに関連します。最後のオプションの場合、実際の制限を入力する必要はありません。詳細については以下をお読みください。
保存をクリックします。
許可リストまたはブロックリストを選択している場合は特に、追加リクエストを本当に必要とするユーザーに例外を追加するようにします。「例外の追加」を参照してください。
リクエストの制限 - 詳細
許可リストやブロックリストと同様に、グローバル設定または例外ではリクエストの制限オプションを頻繁に使用することがあります。
このオプションと仕組みについて詳しく見てみましょう。
許可されているリクエスト数: 各ユーザーは、選択した期間に特定の件数のリクエストを許可されています。1 秒あたり 10 件のリクエスト、1 時間あたり 100 件のリクエストなどの任意のの設定を選択できます。
最大リクエスト数 (詳細): リクエストが頻繁に送信されない場合は、許可されているリクエスト数をユーザーあたりの最大数まで貯めることができます。このオプションを使用すると、ユーザーは通常と異なる頻度 (レートで指定された 1 分あたり 10 件の代わりに 2 分あたり 20 件など) でリクエストを作成するか、時間をかけて多くのリクエストを蓄積し、必要に応じて一度に送信できます。最大値の設定が難しい場合、[許可されているリクエスト数] と同じ値に設定することで問題ありません。
例
適切な制限を見つける
例外の追加
同様に例外は、他のユーザーよりも多くのリクエストを実際に必要とするユーザーのための特別な制限です。選択した例外は、グローバル設定よりも優先されます。
例外を追加または編集した後、変更はすぐに反映されますが、新しい設定がユーザーに適用されるには最大で 1 分かかります。
例外を追加するには、次の手順を実行します。
[例外] タブを開きます。
[例外の追加] をクリックします。
ユーザーを見つけ、そのユーザーのための新しい設定を選択します。
グループを選択することはできませんが、複数のユーザーを選択できます。
ここで利用可能なオプションはグローバルな設定の場合と同じです: "無制限のリクエストを許可"、"すべてのリクエストをブロック "、"カスタム制限を割り当て"。
保存をクリックします。
後から例外を編集したい場合は、[例外] タブでユーザー名の横にある [編集] をクリックします。
推奨: 匿名アクセスへの例外を追加
Jira では、すべての匿名トラフィックが "Anonymous" という 1 人のユーザーによるものであるとみなします。レート制限が十分に高くない場合、1 人のユーザーが匿名ユーザーに割り当てられた制限を使い果たす可能性があります。このアカウントに高い制限値を割り当てた例外を追加し、さらなる追加が必要かどうかを確認することをおすすめします。
レート制限されているユーザーの特定
ユーザーがレート制限を受けている場合、HTTP 429 エラー メッセージ (too many requests) が表示されるため、ユーザーはすぐにそのことを確認できます。管理者はレート制限設定ページの [制限を受けているアカウントの一覧] を開いて、レート制限を受けているユーザーを特定できます。一覧には、クラスタ全体のすべてのユーザーが表示されます。
ユーザーがレート制限を受けている場合、表に表示されるには最大で 5 分かかります。
異常なアカウント
ユーザーは一覧にユーザー名で表示されます。ただし一覧には、いくつかの異常なアカウントが表示される場合があります。以下に例を示します。
Unknown: Jira で削除されたユーザーです。これらのユーザーは 24 時間を経過すると一覧には表示されませんが (ユーザーをレート制限することはできなくなっているため)、例外の一覧には表示される場合があります。これらのユーザーにはレート制限は不要なため、設定を削除してかまいません。
Anonymous: このエントリは、認証されていないアカウントから行われたすべてのリクエストを収集します。1 人のユーザーで匿名アクセスの制限までのリクエスト数を簡単に使用できてしまうことがあるため、匿名トラフィックに例外を追加して、高い制限値を追加することをおすすめします。
制限付きのリクエストをログ ファイルに追加する
Jira のログ ファイルでレート制限されているユーザーやリクエスト数の情報を表示することもできます。これは、リクエストの宛先 URL やリクエスト元の URL の詳細を知りたい場合に便利です。
レート制限とは - ユーザーの観点から
ユーザーが認証済みのリクエストを作成すると、レスポンスにレート制限のヘッダーが表示されます。これらのヘッダーはレート制限されているときだけでなく、すべてのレスポンスに追加されます。
ヘッダー | 説明 |
---|---|
| 保有できるリクエスト (トークン) の最大数。この制限に到達した後は、新しいトークンがバケットに追加されません。管理者はこれを最大リクエスト数として設定します。 |
| トークンの残りの数。自身が現在保有していて、すぐに使用できるトークン数です。 |
| 時間間隔 (秒単位)。この間隔ごとに新しいトークンのバッチを取得できます。 |
| 時間間隔ごとに取得するトークンの数。管理者は、これを許可されるリクエスト数として設定します。 |
| 新しいトークンを取得するまでに待機する必要がある時間。 |
ユーザーがレート制限を受けていてリクエストが処理されない場合、HTTP 429 エラー メッセージ (too many requests) が返されます。ユーザーはこのヘッダーを使用して、スクリプトや自動化を制限に合わせて調整し、妥当な頻度でリクエストを送信できます。
URL と外部アプリケーションの許可リスト
URL とリソースを許可リストに追加する
Jira インスタンスで URL 全体およびリソースを許可リストに登録する方法を追加しました。これを使用することで、レート制限されているが、制限されるべきではないものを、素早く修正できます。
[管理] > [システム] > [一般設定] に移動します。
[高度な設定] をクリックします。
com.atlassian.ratelimiting.whitelisted-url-patterns
プロパティを見つけ、カンマ区切りリストの形式で URL を入力します。例:/**/rest/applinks/**,/**/rest/capabilities,/**/rest/someapi
URL パターンの作成方法の詳細については「AntPathMatcher: URL patterns」を参照してください。
外部アプリケーションを許可リストに追加する
コンシューマー キーを許可リストに追加して、アプリケーション リンクを通じて連携された外部アプリケーションのレート制限を削除できます。
アトラシアン クラウド製品の場合、コンシューマー キーの取得方法は異なります。クラウド製品のレート制限を削除したい場合、「アトラシアン クラウド製品に対するレート制限の削除」を参照してください。
アプリケーションのコンシューマー キーを見つけます。
[管理] > [アプリケーション] > [アプリケーション リンク] に移動します。
アプリケーションを見つけて [編集] をクリックします。
[受信認証] を開き、コンシューマー キーをコピーします。
コンシューマー キーを許可リストに追加します。
[管理] > [システム] > [一般設定] に移動します。
[高度な設定] をクリックします。
com.atlassian.ratelimiting.whitelisted-oauth-consumers
の値としてコンシューマー キーを入力します。コンマ区切りリストの形式で複数のコンシューマー キーを入力できます。
コンシューマー キーを入力すると、関連するアプリケーションからのトラフィックは制限されなくなります。
レート制限用にコードを調整する
コード (スクリプト、連携、アプリ) に適用してレート制限で使用できる、一連の戦略を作成しました。詳しくは、「レート制限用にコードを調整する」を参照してください。