レート制限でインスタンスの安定性を改善する
When automated integrations or scripts send requests to Bamboo in huge bursts, it can affect Bamboo's stability, leading to drops in performance or even downtime. With rate limiting, you can control how many external REST API requests automations and users can make and how often they can make them, making sure that your Bamboo instance remains stable.
Rate limiting is incompatible with Oracle JDBC driver versions earlier than 21.x. If you're using or plan to use Bamboo with Oracle Database, make sure to install or upgrade to Oracle JDBC version 21.x or later. For more information, see Failed to enable rate limiting in Bamboo in the Bamboo Knowledge Base.
次のセクションにジャンプ
レート制限の仕組み
Here’s some details about how rate limiting works in Bamboo.
レート制限を有効化する方法
You need to be a Bamboo Administrator to turn on rate limiting.
レート制限を有効化するには、次の手順を実行します。
Go to Administration > System > Rate limiting.
ステータスを [有効] に変更します。
次のオプションのうち 1 つを選択します: 無制限のリクエストを許可、すべてのリクエストをブロック、またはリクエストを制限。最初のオプションと 2 番目のオプションは許可リストとブロックリストに関連します。最後のオプションの場合、実際の制限を入力する必要はありません。詳細については以下をお読みください。
保存をクリックします。
許可リストまたはブロックリストを選択している場合は特に、追加リクエストを本当に必要とするユーザーに例外を追加するようにします。「例外の追加」を参照してください。
リクエストの制限 - 詳細
許可リストやブロックリストと同様に、グローバル設定または例外ではリクエストの制限オプションを頻繁に使用することがあります。
このオプションと仕組みについて詳しく見てみましょう。
許可されているリクエスト数: 各ユーザーは、選択した期間に特定の件数のリクエストを許可されています。1 秒あたり 10 件のリクエスト、1 時間あたり 100 件のリクエストなどの任意のの設定を選択できます。
最大リクエスト数 (詳細): リクエストが頻繁に送信されない場合は、許可されているリクエスト数をユーザーあたりの最大数まで貯めることができます。このオプションを使用すると、ユーザーは通常と異なる頻度 (レートで指定された 1 分あたり 10 件の代わりに 2 分あたり 20 件など) でリクエストを作成するか、時間をかけて多くのリクエストを蓄積し、必要に応じて一度に送信できます。最大値の設定が難しい場合、[許可されているリクエスト数] と同じ値に設定することで問題ありません。
例
適切な制限を見つける
例外の追加
同様に例外は、他のユーザーよりも多くのリクエストを実際に必要とするユーザーのための特別な制限です。選択した例外は、グローバル設定よりも優先されます。
例外を追加または編集した後、変更はすぐに反映されますが、新しい設定がユーザーに適用されるには最大で 1 分かかります。
例外を追加するには、次の手順を実行します。
[例外] タブを開きます。
[例外の追加] をクリックします。
ユーザーを見つけ、そのユーザーのための新しい設定を選択します。
グループを選択することはできませんが、複数のユーザーを選択できます。
ここで利用可能なオプションはグローバルな設定の場合と同じです: "無制限のリクエストを許可"、"すべてのリクエストをブロック "、"カスタム制限を割り当て"。
保存をクリックします。
後から例外を編集したい場合は、[例外] タブでユーザー名の横にある [編集] をクリックします。
推奨: 匿名アクセスへの例外を追加
Bamboo sees all anonymous traffic as made by one user: Anonymous. If your rate limits are not too high, it might happen that a single user drains the limit assigned to anonymous. It’s a good idea to add an exemption for this account with a higher limit, and then observe whether you need to increase it further.
レート制限されているユーザーの特定
ユーザーがレート制限を受けている場合、HTTP 429 エラー メッセージ (too many requests) が表示されるため、ユーザーはすぐにそのことを確認できます。管理者はレート制限設定ページの [制限を受けているアカウントの一覧] を開いて、レート制限を受けているユーザーを特定できます。一覧には、クラスタ全体のすべてのユーザーが表示されます。
ユーザーがレート制限を受けている場合、表に表示されるには最大で 5 分かかります。
異常なアカウント
ユーザーは一覧にユーザー名で表示されます。ただし一覧には、いくつかの異常なアカウントが表示される場合があります。以下に例を示します。
Unknown: That’s a user that has been deleted in Bamboo. They shouldn’t appear on the list for more than 24 hours (as they can’t be rate limited anymore), but you might see them in the list of exemptions. Just delete any settings for them, they don’t need rate limiting anymore.
Anonymous: このエントリは、認証されていないアカウントから行われたすべてのリクエストを収集します。1 人のユーザーで匿名アクセスの制限までのリクエスト数を簡単に使用できてしまうことがあるため、匿名トラフィックに例外を追加して、高い制限値を追加することをおすすめします。
制限付きのリクエストをログ ファイルに追加する
You can also view information about rate limited users and requests in the Bamboo log file. This is useful if you want to get more details about the URLs that requests targeted or originated from.
レート制限とは - ユーザーの観点から
ユーザーが認証済みのリクエストを作成すると、レスポンスにレート制限のヘッダーが表示されます。これらのヘッダーはレート制限されているときだけでなく、すべてのレスポンスに追加されます。
ヘッダー | 説明 |
---|---|
| 保有できるリクエスト (トークン) の最大数。この制限に到達した後は、新しいトークンがバケットに追加されません。管理者はこれを最大リクエスト数として設定します。 |
| トークンの残りの数。自身が現在保有していて、すぐに使用できるトークン数です。 |
| 時間間隔 (秒単位)。この間隔ごとに新しいトークンのバッチを取得できます。 |
| 時間間隔ごとに取得するトークンの数。管理者は、これを許可されるリクエスト数として設定します。 |
| 新しいトークンを取得するまでに待機する必要がある時間。 |
ユーザーがレート制限を受けていてリクエストが処理されない場合、HTTP 429 エラー メッセージ (too many requests) が返されます。ユーザーはこのヘッダーを使用して、スクリプトや自動化を制限に合わせて調整し、妥当な頻度でリクエストを送信できます。
URL と外部アプリケーションの許可リスト
URL とリソースを許可リストに追加する
We’ve also added a way to allowlist whole URLs and resources on your Bamboo instance. This should be used as quick fix for something that gets rate limited, but shouldn’t.
To add URLs the allowlist, configure -Dcom.atlassian.ratelimiting.whitelisted-url-patterns
as a system property with the URLs in a comma-separated list. For example:
-Dcom.atlassian.ratelimiting.whitelisted-url-patterns=/**/rest/applinks/**,/**/rest/capabilities,/**/rest/someapi
For more info on setting system properties, see Configuring your system properties.
For more info on how to create URL patterns, see AntPathMatcher: URL patterns.
外部アプリケーションを許可リストに追加する
コンシューマー キーを許可リストに追加して、アプリケーション リンクを通じて連携された外部アプリケーションのレート制限を削除できます。
Find your app's consumer key
To find your app's consumer key:
Go to > Overview.
In the left menu, scroll down to Manage apps and select Application links.
Open Incoming authentication and copy the consumer key.
Add the consumer key to the allowlist
To add consumer keys to the allowlist, configure -Dcom.atlassian.ratelimiting.whitelisted-oauth-consumers
as a system property with the consumer keys in a comma-separated list.
コンシューマー キーを入力すると、関連するアプリケーションからのトラフィックは制限されなくなります。
レート制限用にコードを調整する
コード (スクリプト、連携、アプリ) に適用してレート制限で使用できる、一連の戦略を作成しました。詳しくは、「レート制限用にコードを調整する」を参照してください。