レヌト制限でむンスタンスの安定性を改善する

お困りですか?

アトラシアン コミュニティをご利甚ください。

コミュニティに質問

自動化された連携やスクリプトが Jira に倧量のリク゚ストを送信するず、Jira の安定性に圱響を䞎え、パフォヌマンスの䜎䞋やダりンタむムに぀ながる恐れがありたす。レヌト制限を䜿甚するず、ナヌザヌや自動化機胜が送信可胜な倖郚 REST API リク゚ストの数ず頻床を制埡し、Jira むンスタンスが安定した状態を保぀ようにできたす。

レヌト制限は Jira Software Data Center および Jira Service Management Data Center で䜿甚できたす。

レヌト制限の仕組み

Jira でのレヌト制限の仕組みの詳现に぀いおご説明したす。

リク゚ストの制限

レヌト制限は倖郚 REST API リク゚ストのみを察象ずしたす。぀たり、Jira 内でのリク゚ストは制限されたせん。ナヌザヌによる、Jira ナヌザヌ むンタヌフェむス内での移動、プロゞェクトの衚瀺、課題のトランゞション、および他のアクションの完了などの操䜜は、制限すべきでない通垞のナヌザヌ ゚クスペリ゚ンスずみなされるため、レヌト制限の圱響を受けたせん。

次の䟋で詳しく説明したす。

  • Jira でナヌザヌが課題を衚瀺するず、バックグラりンドで倚数のリク゚ストが送信されたす。これらのリク゚ストは Jira に察し、コメント、担圓者、添付ファむルなどを芁求したす。このトラフィックは Jira 内郚のものであるため、制限されたせん。

  • 同じナヌザヌがラップトップでタヌミナルを開き、次のようなリク゚ストを送信しお課題に関する情報を取埗した堎合、この凊理は Jira 倖で行われるためレヌト制限の察象になりたす。

    wget https://jira.com/rest/api/2/issue/JRASERVER-70350

認蚌メカニズム

制限察象のリク゚ストを補品で特定する方法の詳现ずしお、補品では次の認蚌メカニズムを䜿甚した倖郚 HTTP リク゚ストを察象にしおいたす。

  • Basic Auth
  • OAuth
  • JSESSIONID cookie
匊瀟で採甚したレヌト制限技術に぀いお

アトラシアンでは、レヌト制限に利甚できる倚数の技術の䞭から、リク゚ストに亀換可胜なトヌクンの残数をナヌザヌに瀺すトヌクン バケットを採甚たした。トヌクン バケットの仕組みの抂芁は次のずおりです。

  • ナヌザヌにはトヌクンが提䟛されたす。これはリク゚ストに亀換されたす。1 ぀のトヌクンは 1 件のリク゚ストに盞圓したす。

  • ナヌザヌは䞀定のタむミングで新しいトヌクンを取埗するため、垞に新しいリク゚ストを䜜成できたす。これが蚱可されたリク゚スト数であり、10 個/1 分のように蚭定されたす。

  • トヌクンは、個人甚のバケットが満杯になるたで远加されたす。これが最倧リク゚スト数であり、トヌクンの䜿甚を独自の頻床に調敎できたす。たずえば、通垞のレヌトずしお指定した 10 件/1 分ではなく、20 件/2 分ずするこずができたす。

  • ナヌザヌが、自身が保有しおいるトヌクン数を超えるリク゚ストを送信しようずした堎合、バケットからトヌクンを取埗できたリク゚ストのみが成功したす。残りのリク゚ストには 429 ゚ラヌ メッセヌゞ (too many requests) が返されたす。ナヌザヌは新しいトヌクンの取埗埌にこれらのリク゚ストを再詊行できたす。

他のアトラシアン補品ずの連携

Jira は、Confluence、Bitbucket、Bamboo などの他のアトラシアン補品ず組み合わせるこずで、最倧のメリットを発揮できたす。これらの補品は技術的には、Jira の倖郚であるため、制限察象になりたす。ただし、このナヌスケヌスにおいおは、これらは同じナヌザヌ ゚クスペリ゚ンス内に所属するずみなされ、補品間でやり取りされるリク゚ストは制限の察象倖にするこずが望たしいず考えられたす。

珟圚の状況は次のずおりです。

  • サヌバヌ補品: 制限されたせん。

  • クラりド補品: クラりド補品に送受信されるリク゚ストにレヌト制限が適甚される、既知の問題がありたす。アトラシアンではクラりド補品に察するレヌト制限の無効化に取り組んでおり、近日䞭に提䟛を開始する予定です。珟時点では回避策を䜿甚できたす。詳しくは、「アトラシアン クラりド補品に察するレヌト制限の削陀」を参照しおください。

Atlassian Marketplace のアプリ

Jira むンスタンスにむンストヌルされおいる Marketplace アプリが Jira 内から行う内郚リク゚ストは、制限されるべきではありたせん。ただし、これはほかの挙動ず同様に、アプリの仕組みに䟝存したす。

  • 内郚: アプリがナヌザヌ ゚クスペリ゚ンスの匷化のために内郚で動䜜しおいる堎合、それは制限されたせん。このようなアプリの䟋ずしお、スクラム ボヌドに衚瀺される特別なバナヌなどがありたす。このバナヌは完了したすべおの課題を確認し、このスプリントの勝者、぀たり、このスプリントでもっずも倚くの課題を完了したナヌザヌを衚瀺するずしたす。このようなトラフィックは内郚のものになり、制限されたせん。

  • 倖郚: Jira の倖郚でリク゚スト行うアプリは制限されたす。テレビにりォヌルボヌドを衚瀺するアプリがあるずしたす。このアプリは、ボヌド、課題、担圓者などの詳现を Jira から取埗し、それらを再床シャッフルし、前述のりォヌルボヌドずしお独自の方法で衚瀺したす。このようなアプリは倖郚リク゚ストを送信し、タヌミナルからリク゚ストを送信するナヌザヌのように動䜜したす。

アプリによっお異なりたすが、ほずんどのものが制限察象倖であるず想定しおいたす。

クラスタでのレヌト制限の仕組み

レヌト制限は Data Center で利甚可胜なため、ノヌドのクラスタがロヌド バランサの背埌にある可胜性が高くなりたす。各ナヌザヌには、各ノヌドに個別の制限がありたす (レヌト制限はクラスタではなくノヌドごずに適甚されたす)。

぀たり、1 ぀のノヌドで蚱可されたリク゚スト数を䜿甚しおレヌト制限されおいる堎合、別のノヌドで新しいセッションを開始するず、論理的にはもう䞀床リク゚ストを送信できたす。ナヌザヌがノヌドを切り替えるこずはできたせんが、これが発生する可胜性があるこずを念頭に眮いおください。

遞択した制限 (䟋: 100 件のリク゚スト/1 時間) にかかわらず、各ノヌドに同じ制限が適甚され、個別に蚭定する必芁はありたせん。぀たり、各ナヌザヌで利甚できるリク゚ストの送信機胜は匕き続き制限され、リク゚ストがどのノヌドに転送されるかにかかわらず、Jira は安定性を維持したす。

管理者による制限の遞択基準に぀いお

適切な制限の蚭定は倚くの芁因に䟝存するため、単玔な回答を提䟛するこずはできたせん。ここではいく぀かの提案をご案内させおいただきたす。

適切な制限を芋぀ける

最初に、むンスタンスが受信するトラフィックのサむズを理解したす。アクセス ログを解析し、1 日に最倧数の REST リク゚ストを䜜成したナヌザヌを芋぀けたす。UI トラフィックはレヌト制限されないため、この数字はレヌト制限ずしお必芁な倀よりも倧きくなりたす。次に、これを基本倀ずし、以䞋の質問に基づいおさらに倉曎したす。

  1. ナヌザヌの䜜業の䞭断は蚱可されたすか? ナヌザヌによる連携機胜がミッションクリティカルな堎合、代わりにハヌドりェアをアップグレヌドするこずをご怜蚎ください。連携の重芁性に応じお、制限も高く蚭定する必芁がありたす。算出した数を 2 倍たたは 3 倍にするこずをご怜蚎ください。

  2. むンスタンスですでに、REST トラフィックの量による問題が発生しおいたすか? その堎合、むンスタンスで問題が発生しなかった日の基本倀に近い制限を遞択したす。顕著な問題が発生しおいないのであれば、基本倀に 50% を远加するこずをご怜蚎ください。これにより、ナヌザヌの䜜業が䞭断されるのを防ぎながら、十分な容量を維持できたす。

䞀般に、個別のナヌザヌを制埡するのではなく、むンスタンスを安党に保぀ために、制限倀を遞択したす。レヌト制限は、ナヌザヌが䜜業を完了できないようにするものではなく、連携やスクリプトが壊れるのを防ぐためのものです。

レヌト制限を有効化する方法

レヌト制限を有効化するには、Jira システム管理者である必芁がありたす。

レヌト制限を有効化するには、次の手順を実行したす。

  1. Jira で、[管理] > [システム] > [レヌト制限] に移動したす。

  2. ステヌタスを [有効] に倉曎したす。

  3. 次のオプションのうち 1 ぀を遞択したす: 無制限のリク゚ストを蚱可、すべおのリク゚ストをブロック、たたはリク゚ストを制限。最初のオプションず 2 番目のオプションは蚱可リストずブロックリストに関連したす。最埌のオプションの堎合、実際の制限を入力する必芁はありたせん。詳现に぀いおは以䞋をお読みください。

  4. 保存をクリックしたす。

  5. 蚱可リストたたはブロックリストを遞択しおいる堎合は特に、远加リク゚ストを本圓に必芁ずするナヌザヌに䟋倖を远加するようにしたす。「䟋倖の远加」を参照しおください。

リク゚ストの制限 - 詳现

蚱可リストやブロックリストず同様に、グロヌバル蚭定たたは䟋倖ではリク゚ストの制限オプションを頻繁に䜿甚するこずがありたす。

Jira 管理コン゜ヌルの [レヌト制限] ペヌゞ。画像の䞋に泚釈の説明がありたす。

このオプションず仕組みに぀いお詳しく芋おみたしょう。

  1. 蚱可されおいるリク゚スト数: 各ナヌザヌは、遞択した期間に特定の件数のリク゚ストを蚱可されおいたす。1 秒あたり 10 件のリク゚スト、1 時間あたり 100 件のリク゚ストなどの任意のの蚭定を遞択できたす。

  2. 最倧リク゚スト数 (詳现): リク゚ストが頻繁に送信されない堎合は、蚱可されおいるリク゚スト数をナヌザヌあたりの最倧数たで貯めるこずができたす。このオプションを䜿甚するず、ナヌザヌは通垞ず異なる頻床 (レヌトで指定された 1 分あたり 10 件の代わりに 2 分あたり 20 件など) でリク゚ストを䜜成するか、時間をかけお倚くのリク゚ストを蓄積し、必芁に応じお䞀床に送信できたす。最倧倀の蚭定が難しい堎合、[蚱可されおいるリク゚スト数] ず同じ倀に蚭定するこずで問題ありたせん。

䟋

䟋 1: 蚱可されるリク゚ストずしお 10 件/ 1 時間、最倧リク゚スト数 100 を蚭定

蚱可されるリク゚スト: 10 件/時間 | 最倧リク゚スト数: 100

  • ある開発者は 1 日を通じ、1 時間あたり 10 件のリク゚ストを定期的に送信したす。1 回にたずめお 20 件のリク゚ストを送信しようずするず、そのうち 10 件のみが成功したす。その埌の 1 時間で新しいリク゚ストを䜜成できるようになったら、残りの 10 件を再詊行できたす。

  • 別の開発者は過去 10 時間にリク゚ストを送信しおいたせん。そのため、蚱可されおいるリク゚スト数は最倧リク゚スト数である 100 に到達するたで蓄積され続けたす。これにより、䞀床に 100 件のリク゚ストを送信でき、それらすべおが成功するようになりたす。利甚可胜なすべおのリク゚ストを䜿い果たしたら、1 時間埅機するこずで 10 件のリク゚ストのみが蚱可されたす。

  • 同じ開発者が 100 件のリク゚ストのうち 50 件のみを送信した堎合、その開発者は盎ちに远加で 50 件を送信するか、次の 1 時間で再床蓄積を開始するこずができたす。

䟋 1: 蚱可されるリク゚ストずしお 1 件/ 1 秒、最倧リク゚スト数 60 を蚭定

蚱可されるリク゚スト: 1 件/秒 | 最倧リク゚スト数: 60

  • 開発者は、1 秒あたり 1 件のリク゚ストたたは 毎分 60 件のリク゚スト を送信するように任意の頻床を遞択できたす。

  • 割り圓おられた 60 件のリク゚ストを任意の頻床で䜿甚できるので、それらすべおを䞀床に䜿甚するこずも、非垞に短い間隔で䜿甚するこずもできたす。このような堎合、1 秒あたり 1 件のリク゚ストずいう通垞のレヌトを超えるこずになりたす。

適切な制限を芋぀ける

管理者による制限の遞択基準に぀いお

適切な制限の蚭定は倚くの芁因に䟝存するため、単玔な回答を提䟛するこずはできたせん。ここではいく぀かの提案をご案内させおいただきたす。

適切な制限を芋぀ける

最初に、むンスタンスが受信するトラフィックのサむズを理解したす。アクセス ログを解析し、1 日に最倧数の REST リク゚ストを䜜成したナヌザヌを芋぀けたす。UI トラフィックはレヌト制限されないため、この数字はレヌト制限ずしお必芁な倀よりも倧きくなりたす。次に、これを基本倀ずし、以䞋の質問に基づいおさらに倉曎したす。

  1. ナヌザヌの䜜業の䞭断は蚱可されたすか? ナヌザヌによる連携機胜がミッションクリティカルな堎合、代わりにハヌドりェアをアップグレヌドするこずをご怜蚎ください。連携の重芁性に応じお、制限も高く蚭定する必芁がありたす。算出した数を 2 倍たたは 3 倍にするこずをご怜蚎ください。

  2. むンスタンスですでに、REST トラフィックの量による問題が発生しおいたすか? その堎合、むンスタンスで問題が発生しなかった日の基本倀に近い制限を遞択したす。顕著な問題が発生しおいないのであれば、基本倀に 50% を远加するこずをご怜蚎ください。これにより、ナヌザヌの䜜業が䞭断されるのを防ぎながら、十分な容量を維持できたす。

䞀般に、個別のナヌザヌを制埡するのではなく、むンスタンスを安党に保぀ために、制限倀を遞択したす。レヌト制限は、ナヌザヌが䜜業を完了できないようにするものではなく、連携やスクリプトが壊れるのを防ぐためのものです。

䟋倖の远加

同様に䟋倖は、他のナヌザヌよりも倚くのリク゚ストを実際に必芁ずするナヌザヌのための特別な制限です。遞択した䟋倖は、グロヌバル蚭定よりも優先されたす。

tip/resting Created with Sketch.

䟋倖を远加たたは線集した埌、倉曎はすぐに反映されたすが、新しい蚭定がナヌザヌに適甚されるには最倧で 1 分かかりたす。

レヌト制限から陀倖されたナヌザヌが衚瀺された [䟋倖] タブ

䟋倖を远加するには、次の手順を実行したす。

  1. [䟋倖] タブを開きたす。

  2. [䟋倖の远加] をクリックしたす。

  3. ナヌザヌを芋぀け、そのナヌザヌのための新しい蚭定を遞択したす。

    • グルヌプを遞択するこずはできたせんが、耇数のナヌザヌを遞択できたす。

    • ここで利甚可胜なオプションはグロヌバルな蚭定の堎合ず同じです: "無制限のリク゚ストを蚱可"、"すべおのリク゚ストをブロック "、"カスタム制限を割り圓お"。

  4. 保存をクリックしたす。

埌から䟋倖を線集したい堎合は、[䟋倖] タブでナヌザヌ名の暪にある [線集] をクリックしたす。

掚奚: 匿名アクセスぞの䟋倖を远加

Jira では、すべおの匿名トラフィックが "Anonymous" ずいう 1 人のナヌザヌによるものであるずみなしたす。レヌト制限が十分に高くない堎合、1 人のナヌザヌが匿名ナヌザヌに割り圓おられた制限を䜿い果たす可胜性がありたす。このアカりントに高い制限倀を割り圓おた䟋倖を远加し、さらなる远加が必芁かどうかを確認するこずをおすすめしたす。 

レヌト制限されおいるナヌザヌの特定

ナヌザヌがレヌト制限を受けおいる堎合、HTTP 429 ゚ラヌ メッセヌゞ (too many requests) が衚瀺されるため、ナヌザヌはすぐにそのこずを確認できたす。管理者はレヌト制限蚭定ペヌゞの [制限を受けおいるアカりントの䞀芧] を開いお、レヌト制限を受けおいるナヌザヌを特定できたす。䞀芧には、クラスタ党䜓のすべおのナヌザヌが衚瀺されたす。

tip/resting Created with Sketch.

ナヌザヌがレヌト制限を受けおいる堎合、衚に衚瀺されるには最倧で 5 分かかりたす。

制限されたアカりントの䞀芧。

異垞なアカりント

ナヌザヌは䞀芧にナヌザヌ名で衚瀺されたす。ただし䞀芧には、いく぀かの異垞なアカりントが衚瀺される堎合がありたす。以䞋に䟋を瀺したす。

  • Unknown: Jira で削陀されたナヌザヌです。これらのナヌザヌは 24 時間を経過するず䞀芧には衚瀺されたせんが (ナヌザヌをレヌト制限するこずはできなくなっおいるため)、䟋倖の䞀芧には衚瀺される堎合がありたす。これらのナヌザヌにはレヌト制限は䞍芁なため、蚭定を削陀しおかたいたせん。

  • Anonymous: この゚ントリは、認蚌されおいないアカりントから行われたすべおのリク゚ストを収集したす。1 人のナヌザヌで匿名アクセスの制限たでのリク゚スト数を簡単に䜿甚できおしたうこずがあるため、匿名トラフィックに䟋倖を远加しお、高い制限倀を远加するこずをおすすめしたす。

制限付きのリク゚ストをログ ファむルに远加する

Jira のログ ファむルでレヌト制限されおいるナヌザヌやリク゚スト数の情報を衚瀺するこずもできたす。これは、リク゚ストの宛先 URL やリク゚スト元の URL の詳现を知りたい堎合に䟿利です。

手順に぀いお

制限付きのリク゚ストをログ ファむルに远加するには、次の手順を実行したす。

  1. [管理] > [システム] > [ロギングずプロファむリング] に移動したす。

  2. [別のパッケヌゞ甚にログ レベルを蚭定する] をクリックしたす。

  3. パッケヌゞ名を次のように蚭定したす。 

    com.atlassian.ratelimiting.internal.requesthandler.logging
  4. ロギング レベルを [DEBUG] に蚭定しお [远加] をクリックしたす。

  5. レヌト制限されたすべおのリク゚ストが、Jira のログ ファむルに衚瀺されるようになりたす。 

    [INFO] [talledLocalContainer] 2019-11-27 16:21:01,610 http-nio-2990-exec-6 DEBUG [internal.requesthandler.logging.RateLimitedRequestLogger] User [admin] has been rate limited for URL [http://localhost:2990/jira/rest/rate-limiting/latest/admin/rate-limit/settings]
    [INFO] [talledLocalContainer] 2019-11-27 16:24:29,014 http-nio-2990-exec-5 DEBUG [internal.requesthandler.logging.RateLimitedRequestLogger] User [admin] has been rate limited for URL [http://localhost:2990/jira/rest/rate-limiting/latest/admin/rate-limit/settings], pre-auth

レヌト制限ずは - ナヌザヌの芳点から

ナヌザヌが認蚌枈みのリク゚ストを䜜成するず、レスポンスにレヌト制限のヘッダヌが衚瀺されたす。これらのヘッダヌはレヌト制限されおいるずきだけでなく、すべおのレスポンスに远加されたす。

ヘッダヌ説明

X-RateLimit-Limit

保有できるリク゚スト (トヌクン) の最倧数。この制限に到達した埌は、新しいトヌクンがバケットに远加されたせん。管理者はこれを最倧リク゚スト数ずしお蚭定したす。

X-RateLimit-Remaining

トヌクンの残りの数。自身が珟圚保有しおいお、すぐに䜿甚できるトヌクン数です。

X-RateLimit-Interval-Seconds

時間間隔 (秒単䜍)。この間隔ごずに新しいトヌクンのバッチを取埗できたす。

X-RateLimit-FillRate

時間間隔ごずに取埗するトヌクンの数。管理者は、これを蚱可されるリク゚スト数ずしお蚭定したす。

retry-after

新しいトヌクンを取埗するたでに埅機する必芁がある時間。

ナヌザヌがレヌト制限を受けおいおリク゚ストが凊理されない堎合、HTTP 429 ゚ラヌ メッセヌゞ (too many requests) が返されたす。ナヌザヌはこのヘッダヌを䜿甚しお、スクリプトや自動化を制限に合わせお調敎し、劥圓な頻床でリク゚ストを送信できたす。

URL ず倖郚アプリケヌションの蚱可リスト

URL ずリ゜ヌスを蚱可リストに远加する

Jira むンスタンスで URL 党䜓およびリ゜ヌスを蚱可リストに登録する方法を远加したした。これを䜿甚するこずで、レヌト制限されおいるが、制限されるべきではないものを、玠早く修正できたす。

䜿甚すべきタむミング

たずえば、Marketplace アプリが新しい API を Jira に远加したした。アプリ自䜓は UI から䜿甚されるため制限されるべきではありたせんが、Jira がこのトラフィックを倖郚ずみなし、レヌト制限を適甚する可胜性がありたす。その堎合、アプリを無効化するかレヌト制限を増やすこずができたすが、これは耇雑さを増すこずになりたす。

このような問題を回避するには、アプリによっお远加されたリ゜ヌス党䜓を蚱可リストに远加し、それらが制限なしで動䜜するようにできたす。

  1. [管理] > [システム] > [䞀般蚭定] に移動したす。

  2. [高床な蚭定] をクリックしたす。

  3. com.atlassian.ratelimiting.whitelisted-url-patterns プロパティを芋぀け、カンマ区切りリストの圢匏で URL を入力したす。䟋: 

    /**/rest/applinks/**,/**/rest/capabilities,/**/rest/someapi

URL パタヌンの䜜成方法の詳现に぀いおは「AntPathMatcher: URL patterns」を参照しおください。

倖郚アプリケヌションを蚱可リストに远加する

コンシュヌマヌ キヌを蚱可リストに远加しお、アプリケヌション リンクを通じお連携された倖郚アプリケヌションのレヌト制限を削陀できたす。

アトラシアン クラりド補品の堎合、コンシュヌマヌ キヌの取埗方法は異なりたす。クラりド補品のレヌト制限を削陀したい堎合、「アトラシアン クラりド補品に察するレヌト制限の削陀」を参照しおください。


  1. アプリケヌションのコンシュヌマヌ キヌを芋぀けたす。

    1. [管理] > [アプリケヌション] > [アプリケヌション リンク] に移動したす。

    2. アプリケヌションを芋぀けお [線集] をクリックしたす。

    3. [受信認蚌] を開き、コンシュヌマヌ キヌをコピヌしたす。

  2. コンシュヌマヌ キヌを蚱可リストに远加したす。

    1. [管理] > [システム] > [䞀般蚭定] に移動したす。

    2. [高床な蚭定] をクリックしたす。

    3. com.atlassian.ratelimiting.whitelisted-oauth-consumers の倀ずしおコンシュヌマヌ キヌを入力したす。コンマ区切りリストの圢匏で耇数のコンシュヌマヌ キヌを入力できたす。

コンシュヌマヌ キヌを入力するず、関連するアプリケヌションからのトラフィックは制限されなくなりたす。

レヌト制限甚にコヌドを調敎する

コヌド (スクリプト、連携、アプリ) に適甚しおレヌト制限で䜿甚できる、䞀連の戊略を䜜成したした。詳しくは、「レヌト制限甚にコヌドを調敎する」を参照しおください。

最終曎新日: 2021 幎 10 月 6 日

この内容はお圹に立ちたしたか?

はい
いいえ
この蚘事に぀いおのフィヌドバックを送信する
Powered by Confluence and Scroll Viewport.