レート制限でインスタンスの安定性を改善する
自動化された連携やスクリプトが Jira に大量のリクエストを送信すると、Jira の安定性に影響を与え、パフォーマンスの低下やダウンタイムにつながる恐れがあります。レート制限を使用すると、ユーザーや自動化機能が送信可能な外部 REST API リクエストの数と頻度を制御し、Jira インスタンスが安定した状態を保つようにできます。
レート制限は Jira Software Data Center および Jira Service Management Data Center で使用できます。
次のセクションにジャンプ
レート制限の仕組み
Jira でのレート制限の仕組みの詳細についてご説明します。
レート制限を有効化する方法
レート制限を有効化するには、Jira システム管理者である必要があります。
レート制限を有効化するには、次の手順を実行します。
Jira で、[管理] > [システム] > [レート制限] に移動します。
ステータスを [有効] に変更します。
次のオプションのうち 1 つを選択します: 無制限のリクエストを許可、すべてのリクエストをブロック、またはリクエストを制限。最初のオプションと 2 番目のオプションは許可リストとブロックリストに関連します。最後のオプションの場合、実際の制限を入力する必要はありません。詳細については以下をお読みください。
保存をクリックします。
許可リストまたはブロックリストを選択している場合は特に、追加リクエストを本当に必要とするユーザーに例外を追加するようにします。「例外の追加」を参照してください。
リクエストの制限 - 詳細
As much as allowlisting and blocklisting shouldn’t require additional explanation, you’ll probably be using the Limit requests option quite often, either as a global setting or in exemptions.
このオプションと仕組みについて詳しく見てみましょう。
Requests allowed: Every user is allowed a certain amount of requests in a chosen time interval. It can be 10 requests every second, 100 requests every hour, or any other configuration you choose.
Jira always translates the time interval in seconds, regardless of which unit of time you select (seconds, minutes, or hours).
- Max requests (advanced): Allowed requests, if not sent frequently, can be accumulated up to a set maximum per user. This option allows users to make requests at a different frequency than their usual rate (for example, 20 every 2 minutes instead of 10 every 1 minute, as specified in their rate), or accumulate more requests over time and send them in a single burst. Too advanced? Just make it equal to Requests allowed, and forget about this field — nothing more will be accumulated.
例
適切な制限を見つける
例外の追加
同様に例外は、他のユーザーよりも多くのリクエストを実際に必要とするユーザーのための特別な制限です。選択した例外は、グローバル設定よりも優先されます。
例外を追加または編集した後、変更はすぐに反映されますが、新しい設定がユーザーに適用されるには最大で 1 分かかります。
例外を追加するには、次の手順を実行します。
[例外] タブを開きます。
[例外の追加] をクリックします。
ユーザーを見つけ、そのユーザーのための新しい設定を選択します。
グループを選択することはできませんが、複数のユーザーを選択できます。
ここで利用可能なオプションはグローバルな設定の場合と同じです: "無制限のリクエストを許可"、"すべてのリクエストをブロック "、"カスタム制限を割り当て"。
保存をクリックします。
後から例外を編集したい場合は、[例外] タブでユーザー名の横にある [編集] をクリックします。
推奨: 匿名アクセスへの例外を追加
Jira では、すべての匿名トラフィックが "Anonymous" という 1 人のユーザーによるものであるとみなします。レート制限が十分に高くない場合、1 人のユーザーが匿名ユーザーに割り当てられた制限を使い果たす可能性があります。このアカウントに高い制限値を割り当てた例外を追加し、さらなる追加が必要かどうかを確認することをおすすめします。
レート制限されているユーザーの特定
ユーザーがレート制限を受けている場合、HTTP 429 エラー メッセージ (too many requests) が表示されるため、ユーザーはすぐにそのことを確認できます。管理者はレート制限設定ページの [制限を受けているアカウントの一覧] を開いて、レート制限を受けているユーザーを特定できます。一覧には、クラスタ全体のすべてのユーザーが表示されます。
ユーザーがレート制限を受けている場合、表に表示されるには最大で 5 分かかります。
異常なアカウント
ユーザーは一覧にユーザー名で表示されます。ただし一覧には、いくつかの異常なアカウントが表示される場合があります。以下に例を示します。
Unknown: Jira で削除されたユーザーです。これらのユーザーは 24 時間を経過すると一覧には表示されませんが (ユーザーをレート制限することはできなくなっているため)、例外の一覧には表示される場合があります。これらのユーザーにはレート制限は不要なため、設定を削除してかまいません。
Anonymous: このエントリは、認証されていないアカウントから行われたすべてのリクエストを収集します。1 人のユーザーで匿名アクセスの制限までのリクエスト数を簡単に使用できてしまうことがあるため、匿名トラフィックに例外を追加して、高い制限値を追加することをおすすめします。
制限付きのリクエストをログ ファイルに追加する
Jira のログ ファイルでレート制限されているユーザーやリクエスト数の情報を表示することもできます。これは、リクエストの宛先 URL やリクエスト元の URL の詳細を知りたい場合に便利です。
レート制限とは - ユーザーの観点から
ユーザーが認証済みのリクエストを作成すると、レスポンスにレート制限のヘッダーが表示されます。これらのヘッダーはレート制限されているときだけでなく、すべてのレスポンスに追加されます。
ヘッダー | 説明 |
---|---|
| The maximum number of requests (tokens) you can ever have. New tokens won’t be added to your bucket after reaching this limit. Your admin configures this as Max requests. |
| トークンの残りの数。自身が現在保有していて、すぐに使用できるトークン数です。 |
| 時間間隔 (秒単位)。この間隔ごとに新しいトークンのバッチを取得できます。 |
| The number of tokens you get every time interval. Your admin configures this as Requests allowed. |
| 新しいトークンを取得するまでに待機する必要がある時間。 You can send a request successfully when the |
ユーザーがレート制限を受けていてリクエストが処理されない場合、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
の値としてコンシューマー キーを入力します。コンマ区切りリストの形式で複数のコンシューマー キーを入力できます。
コンシューマー キーを入力すると、関連するアプリケーションからのトラフィックは制限されなくなります。
レート制限用にコードを調整する
コード (スクリプト、連携、アプリ) に適用してレート制限で使用できる、一連の戦略を作成しました。詳しくは、「レート制限用にコードを調整する」を参照してください。
既知の問題
If the Jira rate limiting configuration doesn’t work as expected, check this knowledge base article for solutions.
To check if the issue is with cookies or headers in the requests, check this knowledge base article for the fix.