Skip to main content

Configuring rate limits (レート制限を構成する)

[Management Console] を使用することで、GitHub Enterprise Server のレート制限を設定できます。

この機能を使用できるユーザーについて

Site administrators can configure rate limits for a GitHub Enterprise Server instance.

GitHub Enterprise Server のレート制限について

レート制限は、お使いの GitHub Enterprise Server インスタンス でリソースが過剰に使用され、すべてのユーザーの可用性やパフォーマンスに影響を与える可能性があることを防ぐのに役立ちます。 GitHub Enterprise Server APIs と GitHub Actions のレート制限を構成できます。

レート制限を慎重に実装し、チューニングを行う際にユーザーと通信します。 初めは緩やかなレート制限から始め、環境に合わせて徐々に調整します。

[Management Console] に対して認証のレート制限を構成することもできます。 詳しくは、「管理コンソールへのアクセスの管理」をご覧ください。

GitHub Enterprise Server APIs のレート制限の有効化

GitHub Enterprise Server APIs に対する要求が多すぎると、インスタンスの速度が低下したり、使用できなくなる可能性があります。 API レート制限がユーザーに与える影響の詳細については、「 REST API のレート制限」を参照してください。

管理シェルの ghe-config ユーティリティを使用して、特定のユーザーを API レート制限から除外できます。 詳しくは、「コマンド ライン ユーティリティ」をご覧ください。

メモ

[Management Console] には、各レート制限の時間間隔 (毎分もしくは毎時) の一覧が表示されます。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  3. [レート制限] で [HTTP API レート制限を有効にする] を選択します。

  4. 各 API の認証された要求と認証されていない要求の制限を入力するか、事前に入力された既定の制限を受け入れます。

  5. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  6. 設定の実行が完了するのを待ってください。

セカンダリ レート制限の有効化

セカンダリ レート制限は、お使いの GitHub Enterprise Server インスタンス をすべてのユーザーに対して安定した状態に保つのに役立ちます。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  3. [レート制限] で [セカンダリ レート制限を有効にする] を選択します。

  4. [Total Requests](要求の合計)、[CPU Limit](CPU 制限)、および [CPU Limit for Searching](検索の CPU 制限) に制限を入力するか、事前に入力された既定の制限をそのまま使用します。

  5. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  6. 設定の実行が完了するのを待ってください。

Git のレート制限を有効にする

GitHub のスタッフのメンバーが推奨している場合は、リポジトリ ネットワークごと、またはユーザー ID ごとに Git レート制限を適用できます。 Git レートの制限は、1 分あたりの同時実行操作で測定され、現在の CPU 負荷に適応します。

警告

GitHubのスタッフから直接推奨されない限り、この設定を無効にしたままにしてください。 Git 操作は、CPU と RAM の使用率の主要な要因になることはほとんどありません。 この機能を有効にすると、Git 操作が高負荷で失敗する可能性が高くなりますが、根本的な原因には対処できません。

  1. GitHub Enterprise Server の管理アカウントから、任意のページの右上隅にある をクリックします。

  2. [サイト管理者] ページにまだ表示されていない場合は、左上隅の [サイト管理者] をクリックします。1. [ Site admin] サイドバーで、[[Management Console]] をクリックします。

  3. [レート制限] で [Git レート制限の有効化] を選択します。

  4. [リポジトリ ネットワークの制限] に、各リポジトリ ネットワークの制限を入力します。

  5. [ユーザー ID の制限] に、各ユーザー ID の制限を入力します。

  6. [設定] サイドバーで [設定の保存] をクリックします。

    メモ

    [Management Console] で設定を保存すると、システム サービスが再起動され、ユーザーにわかるダウンタイムが発生する可能性があります。

  7. 設定の実行が完了するのを待ってください。

GitHub Actions のレート制限を構成する

GitHub Actions のワークフロー実行にレート制限を適用できます。 GitHub Actions の詳細については、「企業向けGitHub Actionsについて」を参照してください。

GitHub Actions のレート制限について

GitHub Enterprise Server インスタンスによって、各 GitHub Actions ワークフロー ジョブがランナーに割り当てられます。 インスタンスが使用可能なランナーにジョブをすぐに割り当てることができない場合、ジョブはキューで待機します。 GitHub Actions で負荷が継続的に高い場合、キューが詰まることがあり、お使いの GitHub Enterprise Server インスタンス のパフォーマンスが低下する恐れがあります。

これを回避するには、GitHub Actions のレート制限を構成します。 このレート制限は、1 分あたりのジョブ実行数で測定されます。 GitHub Enterprise Server は、インスタンス上のすべてのジョブ実行にレート制限を適用します。 実行がレート制限を超えると、キューに入るのではなく、追加の実行が失敗します。 実行の注釈に次のエラーが表示されます。

ワークフロー実行要求のレート制限を超えました。 しばらく待ってからもう一度実行してみてください。

適切なレートリミットの制限により、お使いの GitHub Enterprise Server インスタンス は、普段の運用に支障をきたすことなく、GitHub Actions の使用における異常なピークから保護されます。 適切なしきい値は、インスタンスの使用可能なリソースと一般的なワークロードによって異なります。 GitHub Actions のハードウェア要件の詳細については、 GitHub Enterprise Server で GitHub Actions を開始する方法 を参照してください。

既定では、GitHub Actions のレート制限は無効になっています。 GitHub Enterprise Server は、問題なく一時的な使用量の急増に対処できるため、このレート制限により、持続的な高負荷から保護されます。 パフォーマンスの問題が発生しない限り、無効のままにします。 場合によっては、GitHub のサポート が GitHub Actions のレート制限を有効にすることをお勧めする場合があります。

GitHub Actions のレート制限を有効または無効にする

  1. お使いの GitHub Enterprise Server インスタンス に SSH で接続します。 インスタンスが複数のノードで構成されている場合は (高可用性や geo レプリケーションが構成されている場合など)、プライマリ ノードに SSH 接続します。 クラスターを使用する場合は、任意のノードに SSH 接続できます。 HOSTNAME をインスタンスのホスト名、またはノードのホスト名または IP アドレスに置き換えます。 詳しくは、「管理シェル (SSH) にアクセスする」をご覧ください。

    Shell
    ssh -p 122 admin@HOSTNAME
    
  2. レート制限を有効にして構成するには、次の 2 つのコマンドを実行します。RUNS-PER-MINUTE は選んだ値に置き換えてください。

    ghe-config actions-rate-limiting.enabled true
    ghe-config actions-rate-limiting.queue-runs-per-minute RUNS-PER-MINUTE
    
  3. レート制限を無効にするには、次のコマンドを実行します。

    ghe-config actions-rate-limiting.enabled false
    
  4. 構成を適用するには、次のコマンドを実行します。

    ghe-config-apply
    
  5. 設定の実行が完了するのを待ってください。

ライブ更新サービスのレートの制御

GitHub Enterprise Server インスタンスに対する AJAX 要求の数が問題を引き起こす場合は、これらのライブ更新で使用される WebSockets コントローラーのレート制限を調整する必要があるかもしれません。 アライブ要求を表示する方法の詳細については、 モニター ダッシュボードについて を参照してください。

プライマリ レート制限が有効になっている場合、既定の制限は IP アドレスあたり 1 分あたり 100 要求です。 管理シェルの ghe-config ユーティリティを使用して、 app.github.web-sockets-rate-limit を IP アドレスあたりの 1 分あたりの要求数に設定するか、このレート制限を無効にします。 この制限を正以外の整数値 ( 0-1disabledなど) に設定すると、WebSocket コントローラーでのレート制限が無効になります。

これらの設定を変更した後、 ghe-config-apply を実行して適用します。