レート制限でインスタンスの安定性を改善する
When automated integrations or scripts send requests to Confluence in huge bursts, it can affect Confluence’s stability, leading to drops in performance or even downtime. With rate limiting, you can control how many external REST API requests that automations and users can make and how often they can make them, making sure that your Confluence Data Center instance remains stable.
On this page:
レート制限の仕組み
Confluence でのレート制限の仕組みの詳細についてご説明します。
レート制限を有効化する方法
レート制限をオンにするには、システム管理者グローバル権限が必要です。
レート制限を有効化するには、次の手順を実行します。
- Confluence で、[管理] > [一般設定] > [レート制限] に移動します。
- ステータスを [有効] に変更します。
- 次のオプションのうち 1 つを選択します: 無制限のリクエストを許可、すべてのリクエストをブロック、またはリクエストを制限。最初のオプションと 2 番目のオプションは許可リストとブロックリストに関連します。最後のオプションの場合、実際の制限を入力する必要はありません。詳細については以下をお読みください。
- [保存] を選択して変更を保存します。
許可リストまたはブロックリストを選択している場合は特に、追加リクエストを本当に必要とするユーザーに例外を追加するようにします。「例外の追加」を参照してください。
リクエストの制限 - 詳細
許可リストやブロックリストと同様に、グローバル設定または例外ではリクエストの制限オプションを頻繁に使用することがあります。
このオプションと仕組みについて詳しく見てみましょう。
- 許可されているリクエスト数: 各ユーザーは、選択した期間に特定の件数のリクエストを許可されています。1 秒あたり 10 件のリクエスト、1 時間あたり 100 件のリクエストなどの任意のの設定を選択できます。
- 最大リクエスト数 (詳細): リクエストが頻繁に送信されない場合は、許可されているリクエスト数をユーザーあたりの最大数まで貯めることができます。このオプションを使用すると、ユーザーは通常と異なる頻度 (レートで指定された 1 分あたり 10 件の代わりに 2 分あたり 20 件など) でリクエストを作成するか、時間をかけて多くのリクエストを蓄積し、必要に応じて一度に送信できます。最大値の設定が難しい場合、[許可されているリクエスト数] と同じ値に設定することで問題ありません。
例
適切な制限を見つける
例外の追加
同様に例外は、他のユーザーよりも多くのリクエストを実際に必要とするユーザーのための特別な制限です。選択した例外は、グローバル設定よりも優先されます。
例外を追加または編集した後、変更はすぐに反映されますが、新しい設定がユーザーに適用されるには最大で 1 分かかります。
例外を追加するには、次の手順を実行します。
- [例外] タブに移動します。
- [適用除外を追加] をクリックします。
- ユーザーを見つけ、そのユーザーのための新しい設定を選択します。グループを選択することはできませんが、複数のユーザーを選択できます。
- ここで利用可能なオプションはグローバルな設定の場合と同じです: "無制限のリクエストを許可"、"すべてのリクエストをブロック "、"カスタム制限を割り当て"。
- [保存] を選択して変更を保存します。
If you want to edit an exemption later, just select Edit next to a user’s name in the Exemptions tab.
推奨: 匿名アクセスへの例外を追加
Confluence では、すべての匿名トラフィックが "Anonymous" という 1 人のユーザーによるものであるとみなします。サイトが公開されており、レート制限が高すぎない場合、1 人のユーザーが匿名ユーザーに割り当てられた制限を使い果たす可能性があります。このアカウントに高い制限値を割り当てた例外を追加し、さらなる追加が必要かどうかを確認することをおすすめします。
Identifying users who have been rate-limited
When a user is rate-limited, they’ll know immediately as they’ll receive an HTTP 429 error message (too many requests). You can identify users that have been rate-limited by opening the List of limited accounts tab on the rate limiting settings page. The list shows all users from the whole cluster.
When a user is rate-limited, it takes up to 5 minutes to show it in the table.
異常なアカウント
ユーザーは一覧にユーザー名で表示されます。ただし一覧には、いくつかの異常なアカウントが表示される場合があります。以下に例を示します。
- Unknown: That’s a user that has been deleted in Confluence. 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 人のユーザーで匿名アクセスの制限までのリクエスト数を簡単に使用できてしまうことがあるため、匿名トラフィックに例外を追加して、高い制限値を追加することをおすすめします。
Confluence のログ ファイルで制限付きのリクエストを表示する
You can also view information about rate-limited users and requests in the Confluence log file. This is useful if you want to get more details about the URLs that requests targeted or originated from.
When a request has been rate-limited you’ll see a log entry similar to this one:
2019-12-24 10:18:23,265 WARN [http-nio-8090-exec-7] [ratelimiting.internal.filter.RateLimitFilter] lambda$userHasBeenRateLimited$0 User [2c9d88986ee7cdaa016ee7d40bd20002] has been rate limited
-- url: /rest/api/space/DS/content | traceId: 30c0edcb94620c83 | userName: exampleuser
Getting rate-limited — user’s perspective
When users make authenticated requests, they’ll see rate limiting headers in the response. These headers are added to every response, not just when you’re rate-limited.
ヘッダー | 説明 |
---|---|
X-RateLimit-Limit | 保有できるリクエスト (トークン) の最大数。この制限に到達した後は、新しいトークンがバケットに追加されません。管理者はこれを最大リクエスト数として設定します。 |
X-RateLimit-Remaining | トークンの残りの数。この値はリクエストの実行時には非常に正確ですが、常に正確であるとは限りません。 |
X-RateLimit-Interval-Seconds | 時間間隔 (秒単位)。この間隔ごとに新しいトークンのバッチを取得できます。 |
X-RateLimit-FillRate | 時間間隔ごとに取得するトークンの数。管理者は、これを許可されるリクエスト数として設定します。 |
retry-after | 新しいトークンを取得するまでに待機する必要がある時間。まだトークンが残っている場合は 0 を示し、すぐに追加でリクエストを実行できることを意味します。 |
When you’re rate-limited and your request doesn’t go through, you’ll see the HTTP 429 error message (too many requests). You can use these headers to adjust scripts and automation to your limits, making them send requests at a reasonable frequency.
その他のタスク
URL とリソースを許可リストに追加する
We’ve also added a way to allow whole URLs and resources on your Confluence instance using a system property. This should be used as quick fix for something that gets rate-limited, but shouldn’t.
特定の URL をレート制限から除外することを許可するには、次の手順を実行します。
- Confluence を停止します。
com.atlassian.ratelimiting.whitelisted-url-patterns
システム プロパティを追加し、値を URL のカンマ区切りリストに設定します。例:-Dcom.atlassian.ratelimiting.whitelisted-url-patterns=/**/rest/applinks/**,/**/rest/capabilities,/**/rest/someapi
システム プロパティの追加方法は、Confluence の実行方法によって異なります。詳細については、「システム プロパティを設定する」を参照してください。- Confluence を再起動します。
URL パターンの作成方法の詳細については「AntPathMatcher: URL patterns」を参照してください。
外部アプリケーションを許可リストに追加する
コンシューマー キーを許可リストに追加して、アプリケーション リンクを通じて連携された外部アプリケーションのレート制限を削除できます。
Confluence を他のアトラシアン製品と連携する場合、それらのトラフィックは制限されないため、許可リストに追加する必要はありません。
アプリケーションのコンシューマー キーを見つけます。
[管理] > [一般設定] > [アプリケーション リンク] に移動します。
Find your application, and select Edit.
[受信認証] からコンシューマー キーをコピーします。
コンシューマー キーを許可リストに追加します。
Confluence を停止します。
com.atlassian.ratelimiting.whitelisted-oauth-consumers
システム プロパティを追加し、値をコンシューマー キーのカンマ区切りリストに設定します。例:-Dcom.atlassian.ratelimiting.whitelisted-oauth-consumers=app-connector-for-confluence-server
システム プロパティの追加方法は、Confluence の実行方法によって異なります。詳細については、「システム プロパティを設定する」を参照してください。
Confluence を再起動します。
コンシューマー キーを入力すると、関連するアプリケーションからのトラフィックは制限されなくなります。
レート制限用にコードを調整する
コード (スクリプト、連携、アプリ) に適用してレート制限で使用できる、一連の戦略を作成しました。
詳細は、「レート制限用にコードを調整する」を参照してください。