レート制限でインスタンスの安定性を改善する
When automated integrations or scripts send requests to Crowd in huge bursts, it can affect Crowd’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 Crowd Data Center instance remains stable.
レート制限の仕組み
Here’s some details about how rate limiting works in Crowd.
レート制限を有効化する方法
You need to be a Crowd System Administrator to turn on rate limiting.
o turn on rate limiting:
In Crowd, go to Administration > Rate limiting.
ステータスを [有効] に変更します。
Select one of the options: Allow unlimited requests, Block all requests, or Limit requests. The first and second are all about allowlisting and blocklisting. For the last option, you’ll need to enter actual limits. Find more on the in the public documentation.
変更を [保存] します。
Make sure to add exemptions for users who really need those extra requests, especially if you’ve chosen allowlisting or blocklisting.
リクエストの制限 - 詳細
許可リストやブロックリストと同様に、グローバル設定や適用除外では、リクエスト制限のオプションを頻繁に使用することになるはずです。
このオプションと仕組みについて詳しく見てみましょう。
許可されているリクエスト数: 各ユーザーは、選択した期間に特定の件数のリクエストを許可されています。1 秒あたり 10 件のリクエスト、1 時間あたり 100 件のリクエストなどの任意のの設定を選択できます。
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 分かかります。
例外を追加するには、次の手順を実行します。
[例外] タブに移動します。
[例外の追加] をクリックします。
ユーザーを見つけ、そのユーザーのための新しい設定を選択します。
グループを選択することはできませんが、複数のユーザーを選択できます。
ここで利用可能なオプションはグローバルな設定の場合と同じです: "無制限のリクエストを許可"、"すべてのリクエストをブロック "、"カスタム制限を割り当て"。
変更を [保存] します。
後から例外を編集したい場合は、[例外] タブでユーザー名の横にある [編集] をクリックします。
推奨: 匿名アクセスへの例外を追加
Crowd 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 Crowd. 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 Crowd log file. This is useful if you want to get more details about the URLs that requests targeted or originated from.
レート制限とは - ユーザーの観点から
ヘッダー | 説明 |
---|---|
| これまでに持つことができるリクエスト (トークン) の最大数。この制限に到達した後は、新しいトークンがバケットに追加されません。管理者はこれを [最大要求数] として設定します。 |
| トークンの残りの数。自身が現在保有していて、すぐに使用できるトークン数です。 |
| 時間間隔 (秒単位)。この間隔ごとに新しいトークンのバッチを取得できます。 |
| 時間間隔ごとに取得するトークンの数。管理者は、これを [許容要求数] として設定します。 |
| 新しいトークンを取得するまでに待機する必要がある時間。 You can send a request successfully when the |
ユーザーがレート制限を受けていてリクエストが処理されない場合、HTTP 429 エラー メッセージ (too many requests) が返されます。ユーザーはこのヘッダーを使用して、スクリプトや自動化を制限に合わせて調整し、妥当な頻度でリクエストを送信できます。
URL と外部アプリケーションの許可リスト
URL とリソースを許可リストに追加する
We’ve also added a way to allowlist whole URLs and resources on your Crowd instance. This should be used as quick fix for something that gets rate limited, but shouldn’t.
特定の URL をレート制限から除外することを許可するには、次の手順を実行します。
Stop Crowd.
Add the
com.atlassian.ratelimiting.whitelisted-url-patterns
system property, and set the value to a comma-separated list of URLs, for example:-Dcom.atlassian.ratelimiting.whitelisted-url-patterns=/**/rest/applinks/**,/**/rest/capabilities,/**/rest/someapi
- Restart Crowd.
外部アプリケーションを許可リストに追加する
コンシューマー キーを許可リストに追加して、アプリケーション リンクを通じて連携された外部アプリケーションのレート制限を削除できます。
If you're integrating Crowd with other Atlassian products, you don't have to allowlist them as this traffic isn't limited.
アプリケーションのコンシューマー キーを見つけます。
Go to Administration > Application links.
アプリケーションを見つけて [編集] をクリックします。
[受信認証] を開き、コンシューマー キーをコピーします。
コンシューマー キーを許可リストに追加します。
Stop Crowd.
com.atlassian.ratelimiting.whitelisted-oauth-consumers
システム プロパティを追加し、値をコンシューマー キーのカンマ区切りリストに設定します。例:-Dcom.atlassian.ratelimiting.whitelisted-oauth-consumers=app-connector-for-confluence-server
- Restart Crowd.
コンシューマー キーを入力すると、関連するアプリケーションからのトラフィックは制限されなくなります。
レート制限用にコードを調整する
We’ve created a set of strategies you can apply in your code (scripts, integrations, apps) so it works with rate limits, whatever they are. For more info, see Adjusting your code for rate limiting.