GitLabアプリケーションの制限

GitLabは、多くの大規模なアプリケーションと同様に、パフォーマンスの最低品質を維持するために特定の機能に制限を課しています。いくつかの機能を無制限に許可すると、セキュリティやパフォーマンス、データに影響を与えたり、アプリケーションに割り当てられたリソースを使い果たしたりする可能性があります。

インスタンス設定

インスタンス設定ページでは、現在のGitLabインスタンスで使用されているいくつかの設定に関する情報を見ることができます。

どの制限を設定したかによって、次のようなことがわかります:

  • SSHホストキー情報
  • CI/CDの制限
  • GitLabページの制限
  • パッケージレジストリ制限
  • レート制限
  • サイズ制限

このページは誰でも見ることができるため、認証されていないユーザーは自分に関連する情報しか見ることができません。

インスタンス設定ページにアクセスするには:

  1. 左のサイドバーでHelp({question-o}) >Helpを選択します。
  2. Help]ページで、[Check the current instance configuration]を選択します。

直接の URL は<gitlab_url>/help/instance_configurationです。GitLab.com の場合は、https://gitlab.com/help/instance_configuration

レート制限

レートリミットはGitLabのセキュリティと耐久性を向上させるために使用できます。

レートリミットの設定についてはこちらをご覧ください。

イシューの作成

この設定により、イシュー作成エンドポイントへの要求率が制限されます。

イシュー作成レート制限の詳細はこちらをご覧ください。

  • デフォルトのレート制限: デフォルトでは無効です。

ユーザーまたはIP別

この設定は、ユーザーまたはIPごとのリクエストレートを制限します。

ユーザーとIPレート制限についてもっと読む.

  • デフォルトのレート制限: デフォルトでは無効です。

生のエンドポイント

この設定はエンドポイントごとのリクエストレートを制限します。

生のエンドポイントレート制限の詳細を読む

  • デフォルトのレート制限: プロジェクトごと、コミットごと、ファイルパスごとに300リクエスト。

保護されたパス

この設定は、特定のパスのリクエストレートを制限します。

GitLabはデフォルトで以下のパスをレート制限します:

'/users/password',
'/users/sign_in',
'/api/#{API::API.version}/session.json',
'/api/#{API::API.version}/session',
'/users',
'/users/confirmation',
'/unsubscribes/',
'/import/github/personal_access_token',
'/admin/session'

保護されたパスのレート制限についてもっと読む

  • デフォルトのレート制限: 10リクエスト後、クライアントは再試行する前に60秒待つ必要があります。

パッケージ・レジストリ

この設定では、ユーザーまたはIPごとのPackages APIへの要求レートを制限します。詳細はPackage Registry Rate Limits を参照してください。

  • デフォルトのレート制限: デフォルトでは無効です。

Git LFS

GitLab 14.3で導入されました

この設定は、ユーザーごとのGit LFSリクエストのリクエストレートを制限します。詳細はGitLab Git Large File Storage(LFS) Administration をご覧ください。

  • デフォルトのレート制限: デフォルトでは無効です。

ファイルAPI

この設定は、ユーザーまたは IP アドレスごとの Packages API のリクエストレートを制限します。詳しくはFiles API rate limits をご覧ください。

  • デフォルトのレート制限: デフォルトでは無効です。

非推奨APIエンドポイント

GitLab 14.4で導入されました

この設定は、ユーザーまたはIPアドレスごとの非推奨APIエンドポイントのリクエストレートを制限します。詳しくはDeprecated API rate limits をご覧ください。

  • デフォルトのレート制限: デフォルトでは無効です。

インポート/エクスポート

この設定により、グループとプロジェクトのインポート/エクスポートアクションが制限されます。

リミットデフォルト(ユーザーあたり1分あたり)
プロジェクトインポート6
プロジェクトエクスポート6
プロジェクトエクスポート ダウンロード1
グループインポート6
グループエクスポート6
グループエクスポート ダウンロード1

インポート/エクスポート料金の制限について詳しくはこちらをご覧ください。

会員招待

グループ階層ごとに、1日に招待できるメンバーの最大数を制限します。

  • GitLab.com:無料メンバーは1日あたり20人、PremiumトライアルとUltimateトライアルメンバーは1日あたり50人を招待できます。
  • 自己管理:招待に制限はありません。

Webhookレート制限

1分間に呼び出せるWebhookの回数を、トップレベル名前空間ごとに制限します。これはプロジェクトとグループの Webhook にのみ適用されます。

制限回数を超えた呼び出しはauth.log に記録されます。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(web_hook_calls: 10)

制限を無効にするには、0 に設定します。

  • デフォルトのレート制限:無効(無制限)。

検索レート制限

  • GitLab 14.9で導入されました
  • GitLab 15.9で、イシュー、マージリクエスト、エピック検索をレート制限に含めるように変更
  • GitLab 16.0 で、認証されたリクエストの検索スコープにレートリミットを適用するように変更

この設定により、検索リクエストが以下のように制限されます:

リミットデフォルト(1分あたりのリクエスト数)
認証ユーザー300
未認証ユーザー100

1分あたりの検索レート制限を超える検索リクエストは、以下のエラーを返します:

This endpoint has been requested too many times. Try again later.

パイプライン作成レート制限

GitLab 15.0 で導入されました

この設定はパイプライン作成エンドポイントへのリクエストレートを制限します。

パイプライン作成レート制限の詳細はこちら。

Gitalyの同時実行数制限

クローン・トラフィックはGitalyサービスに大きな負担をかける可能性があります。そのようなワークロードがGitalyサーバーを圧倒するのを防ぐために、Gitaly設定ファイルに同時実行数の制限を設定することができます。

Gitalyの同時実行数制限について詳しくはこちらをご覧ください。

  • デフォルトの速度制限: 無効。

イシュー、マージリクエスト、コミットごとのコメント数

イシュー、マージリクエスト、コミットに対して投稿できるコメント数には制限があります。制限数に達した場合でも、システムノートを追加してイベントの履歴を失わないようにすることはできますが、ユーザーが投稿したコメントは失敗します。

  • 最大制限: 5,000 コメント。

イシュー、マージリクエスト、エピックに関するコメントと説明のサイズ

イシュー、マージリクエスト、エピックに対するコメントや説明のサイズには制限があります。制限を超えるテキストを追加しようとするとエラーになり、アイテムも作成されません。

将来、この制限がより低い数値に変更される可能性があります。

  • 最大サイズ:~100万文字/~1MB。

コミットタイトルと説明文のサイズ

任意に大きなメッセージを含むコミットは GitLab にプッシュすることができますが、以下の表示制限が適用されます:

  • タイトル- コミットメッセージの最初の行。1KiBまで。
  • Description- コミットメッセージの残りの部分。1MBまで。

コミットがプッシュされると、GitLab はタイトルと説明を処理してイシュー (#123) とマージリクエスト (!123) への参照をイシューとマージリクエストへのリンクに置き換えます。

コミット数の多いブランチがプッシュされると、直近の 100 コミットだけが処理されます。

マイルストーン概要のイシュー数

マイルストーン概要ページにロードされるイシューの最大数は500です。上限を超えると、ページにはアラートが表示され、マイルストーン内のすべてのイシューのページ分割リストへのリンクが表示されます。

  • 制限: 500イシュー。

Git プッシュごとのパイプライン数

複数のタグやブランチのように、一度の Git push で複数の変更をプッシュする場合、タグやブランチのパイプラインをトリガーできるのは 4 つまでです。この制限を設けることで、git push --allgit push --mirror を使っているときに誤って大量のパイプラインを作ってしまうことを防いでいます。

マージリクエストパイプラインには制限はありません。Git プッシュで複数のマージリクエストが同時に更新された場合は、更新されたマージリクエストごとにマージリクエストパイプラインをトリガーすることができます。

制限をなくしていくつでも Git push イベントをトリガーできるようにするには、管理者はgit_push_create_all_pipelines 機能フラグを有効にします。この機能フラグを有効にすることは推奨されません。一度に多くの変更がプッシュされ、誤ってパイプラインが大量に作成されると、GitLab インスタンスに過度の負荷がかかる可能性があるからです。

アクティビティ履歴の保持

プロジェクトおよび個人プロフィールのアクティビティ履歴は、3年以内に保存されます。

組み込みメトリクス数

パフォーマンス上の理由から、GitLab Flavored Markdown(GLFM) にメトリクスを埋め込む際には制限があります。

  • 上限は100個です。

Webhookの制限

Webhook のレート制限も参照してください。

Webhook数

セルフマネージドインストールのグループまたはプロジェクトの Webhook の最大数を設定するには、GitLab Rails コンソールで以下を実行します:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

# For project webhooks
Plan.default.actual_limits.update!(project_hooks: 200)

# For group webhooks
Plan.default.actual_limits.update!(group_hooks: 100)

制限を無効にするには、0 に設定します。

デフォルトの最大 Webhook 数は、プロジェクトごとに100 、グループごとに50 です。子グループの Webhook は親グループの Webhook 上限にカウントされません。

GitLab.comについては、GitLab.comのWebhook上限を参照してください。

Webhook ペイロードサイズ

Webhook ペイロードの最大サイズは 25 MB です。

Webhookタイムアウト

GitLabがWebhookを送信してからHTTPレスポンスを待つ秒数。

Webhookのタイムアウト値を変更するには:

  1. /etc/gitlab/gitlab.rb を編集します:

    gitlab_rails['webhook_timeout'] = 60
    
  2. ファイルを保存してください。
  3. 変更を有効にするためにGitLabを再設定し、再起動します:

    gitlab-ctl reconfigure
    gitlab-ctl restart
    

GitLab.comのWebhook制限もご覧ください。

再帰的ウェブフック

GitLab 14.8で導入されました

GitLabは、再帰的なWebhookや、他のWebhookからトリガーできるWebhookの上限を超えるWebhookを検出し、ブロックします。これにより、GitLabはWebhookを使用してAPIを非再帰的に呼び出したり、他のWebhookを不当に多くトリガーしないようなワークフローをサポートし続けることができます。

再帰は、Webhookがそれ自身のGitLabインスタンス(例えばAPI)に対して呼び出しを行うように設定されている場合に起こります。その呼び出しは同じ Webhook をトリガーし、無限ループを作成します。

他の Webhook をトリガーする一連の Webhook によるインスタンスへのリクエストの最大数は 100 です。上限に達すると、GitLabは一連のWebhookによってトリガーされるそれ以降のWebhookをブロックします。

ブロックされた再帰的な Webhook 呼び出しはauth.log"Recursive webhook blocked from executing" というメッセージとともに記録されます。

プルミラーリングの間隔

プル・リフレッシュ間の最小待機時間は、デフォルトで300秒(5分)です。たとえば、プルリフレッシュは、何回トリガしても、指定された300秒間に1回しか実行されません。

この設定は、プロジェクト API を使用してプルリフレッシュを実行する場合、または設定 > リポジトリ > リポジトリのミラーリングで[今すぐ更新({retry})] を選択して更新を強制する場合に適用されます。この設定は、Sidekiqがプルミラーリングに使用する自動30分間隔スケジュールには影響しません。

自己管理インストールでこの制限を変更するには、GitLab Railsコンソールで以下を実行してください:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(pull_mirror_interval_seconds: 200)

自動返信メールからの受信

GitLab はX-Autoreply ヘッダを探すことで、オートレスポンダーから送られてくるすべての受信メールを無視します。このようなメールはイシューへのコメントやマージリクエストを作成しません。

エラートラッキングでSentryから送信されるデータ量

GitLab 15.6で導入されたすべてのSentryレスポンスの制限

GitLabに送信されるSentryペイロードには、セキュリティ上の理由とメモリ消費を制限するために、最大1MBの制限があります。

オフセットベースのページ分割のために REST API で許可されるオフセットの最大値

REST API でオフセットベースのページ分割を使用する場合、 結果のセットに対して要求されるオフセットの最大値に制限があります。この制限は、キーセットベースのページ処理もサポートしているエンドポイントにのみ適用されます。ページ分割のオプションについての詳細はAPI ドキュメントの ページ分割 のセクションを参照ください。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(offset_pagination_limit: 10000)
  • Default offset pagination limit:50000.

制限を無効にするには、0 に設定します。

CI/CDの制限

アクティブパイプラインのジョブ数

プロジェクトごとに、アクティブなパイプラインの総ジョブ数を制限できます。この制限は、新しいパイプラインが作成されるたびに確認されます。アクティブなパイプラインとは、次のいずれかの状態にあるパイプラインを指します:

  • created
  • pending
  • running

新しいパイプラインによってジョブの合計数が制限を超える場合、パイプラインはjob_activity_limit_exceeded エラーで失敗します。

  • GitLab SaaSのサブスクライバーは、プランごとに異なる上限が定義されており、そのプランのすべてのプロジェクトに影響します。
  • GitLab Premiumセルフマネジメント以上のインストールでは、このリミットはdefault プランで定義され、すべてのプロジェクトに影響します。このリミットはデフォルトで無効 (0) になっています。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(ci_active_jobs: 500)

制限を無効にするには、0 に設定します。

ジョブの最大実行時間

ジョブが実行できる最大時間はデフォルトで60分です。60分を超えるジョブはタイムアウトします。

ジョブがタイムアウトするまでの最大実行時間は変更できます:

  • プロジェクトのCI/CD設定で、プロジェクトレベルで変更できます。この制限は10分から1ヶ月の間でなければなりません。
  • ランナーレベルで。この制限は10分以上でなければなりません。

パイプライン内のデプロイジョブの最大数

パイプライン内のデプロイ ジョブの最大数を制限できます。デプロイとは、environment が指定されたジョブのことです。パイプライン内のデプロイ ジョブの数は、パイプラインの作成時に確認されます。デプロイが多すぎるパイプラインは、deployments_limit_exceeded エラーで失敗します。

GitLab のセルフマネージドプランと SaaS プランでは、デフォルトの上限は 500 です。

セルフマネージドインストールの制限を変更するには、以下のGitLab Rails コンソールコマンドでdefault プランの制限を変更してください:

# If limits don't exist for the default plan, you can create one with:
# Plan.default.create_limits!

Plan.default.actual_limits.update!(ci_pipeline_deployments: 500)

制限を無効にするには、0 に設定します。

プロジェクトのCI/CDサブスクリプション数

プロジェクトごとにサブスクリプションの総数を制限できます。この制限は、新しいサブスクリプションが作成されるたびにチェックされます。

新しいサブスクリプションによってサブスクリプションの総数が制限を超える場合、そのサブスクリプションは無効とみなされます。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_project_subscriptions: 500)

制限を無効にするには、0 に設定します。

パイプライントリガーの数の制限

GitLab 14.6で導入されました

プロジェクトごとにパイプライントリガーの最大数の制限を設定することができます。この制限は、新しいトリガーが作成される度にチェックされます。

新しいトリガーによってパイプライントリガーの総数が制限を超える場合、そのトリガーは無効とみなされます。

制限を無効にするには、0 に設定します。セルフマネージドインスタンスのデフォルトは150 です。

セルフマネージドインストールでこの制限を100 に設定するには、GitLab Rails コンソールで以下を実行します:

Plan.default.actual_limits.update!(pipeline_triggers: 100)

この制限はGitLab.com で有効になっています。

パイプラインのスケジュール数

プロジェクトごとにパイプラインスケジュールの総数を制限することができます。この制限は新しいパイプラインスケジュールが作成されるたびにチェックされます。新しいパイプラインスケジュールによってパイプラインスケジュールの合計数が制限を超える場合は、パイプラインスケジュールは作成されません。

GitLab SaaSのサブスクライバーは、プランごとに異なる上限が定義されており、そのプランのすべてのプロジェクトに影響します。

GitLab Premiumセルフマネジメント以上のインストールでは、このリミットはdefault プランで定義され、すべてのプロジェクトに影響します。デフォルトでは、10 のパイプラインスケジュールに制限があります。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_pipeline_schedules: 100)

パイプラインスケジュールで一日に作成されるパイプラインの数を制限します。

GitLab 14.0 で導入されました

パイプラインスケジュールが1日にトリガーできるパイプラインの数を制限できます。

制限値を超える頻度でパイプラインを実行しようとするスケジュールは、最大頻度まで減速されます。頻度は、1440(1日の分数)を制限値で割って計算されます。例えば、最大頻度が

  • 1分間に1回、制限値は1440 です。
  • 10分ごとに1回、144
  • 60分ごとに1回24

最小値は24、つまり60分につき1パイプラインです。最大値はありません。

セルフマネージドインストールでこの制限を1440 に設定するには、GitLab Rails コンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_daily_pipeline_schedule_triggers: 1440)

この制限はGitLab.com で有効になっています。

セキュリティポリシープロジェクトに定義するスケジュールルールの数を制限します。

GitLab 15.1で導入されました

セキュリティポリシープロジェクトごとにスケジュールルールの総数を制限することができます。この制限は、スケジュールルールを持つポリシーが更新されるたびにチェックされます。新しいスケジュールルールによってスケジュールルールの総数が制限を超える場合、新しいスケジュールルールは処理されません。

デフォルトでは、自己管理インスタンスは、処理可能なスケジュール ルールの数を制限しません。

セルフマネージドインストールでこの制限を設定するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(security_policy_scan_execution_schedules: 100)

この制限はGitLab.com で有効になっています。

インスタンスレベルの変数の数

インスタンスレベルのCI/CD変数の総数はインスタンスレベルで制限されます。この制限は、新しいインスタンスレベルの変数が作成されるたびにチェックされます。新しい変数によって変数の総数が制限を超える場合、新しい変数は作成されません。

自己管理インスタンスでは、この制限はdefault プランに対して定義されます。デフォルトでは、この制限は25 に設定されています。

セルフマネージドインストールでこのリミットを新しい値に更新するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_instance_level_variables: 30)

グループレベル変数の数

GitLab 15.7 で導入されました

グループレベルのCI/CD変数の総数はインスタンスレベルで制限されます。この制限は、新しいグループレベルの変数が作成されるたびにチェックされます。新しい変数によって変数の総数が制限を超える場合、新しい変数は作成されません。

自己管理インスタンスでは、この制限はdefault プランに対して定義されます。デフォルトでは、この制限は30000 に設定されています。

セルフマネージドインストールでこのリミットを新しい値に更新するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(group_ci_variables: 40000)

プロジェクトレベルの変数数

GitLab 15.7 で導入されました

プロジェクトレベルのCI/CD変数の総数はインスタンスレベルで制限されます。この制限は、新しいプロジェクトレベルの変数が作成されるたびにチェックされます。新しい変数によって変数の総数が制限を超える場合、新しい変数は作成されません。

自己管理インスタンスでは、この制限はdefault プランに対して定義されます。デフォルトでは、この制限は8000 に設定されています。

セルフマネージドインストールでこのリミットを新しい値に更新するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(project_ci_variables: 10000)

アーティファクトの種類ごとの最大ファイルサイズ

ci_max_artifact_size_annotations GitLab 16.3 で導入された制限です。

ランナーによってアップロードされたartifacts:reports で定義されたジョブアーティファクトは、ファイルサイズが最大ファイルサイズ制限を超えると拒否されます。リミットは、プロジェクトの最大アーティファクトサイズの設定と、指定されたアーティファクトタイプのインスタンスリミットを比較して、小さい方の値を選択することで決定されます。

制限はメガバイト単位で設定されるため、定義可能な最小値は1 MB です。

アーティファクトの各タイプには、設定可能なサイズ制限があります。デフォルトの0 は、特定のアーティファクトタイプに制限がなく、プロジェクトの最大アーティファクトサイズ設定が使用されることを意味します:

アーティファクト制限名デフォルト値
ci_max_artifact_size_accessibility0
ci_max_artifact_size_annotations0
ci_max_artifact_size_api_fuzzing0
ci_max_artifact_size_archive0
ci_max_artifact_size_browser_performance0
ci_max_artifact_size_cluster_applications0
ci_max_artifact_size_cobertura0
ci_max_artifact_size_codequality0
ci_max_artifact_size_container_scanning0
ci_max_artifact_size_coverage_fuzzing0
ci_max_artifact_size_dast0
ci_max_artifact_size_dependency_scanning0
ci_max_artifact_size_dotenv0
ci_max_artifact_size_junit0
ci_max_artifact_size_license_management0
ci_max_artifact_size_license_scanning0
ci_max_artifact_size_load_performance0
ci_max_artifact_size_lsif100 MB
ci_max_artifact_size_metadata0
ci_max_artifact_size_metrics_referee0
ci_max_artifact_size_metrics0
ci_max_artifact_size_network_referee0
ci_max_artifact_size_performance0
ci_max_artifact_size_requirements0
ci_max_artifact_size_requirements_v20
ci_max_artifact_size_sast0
ci_max_artifact_size_secret_detection0
ci_max_artifact_size_terraform5 MB
ci_max_artifact_size_trace0
ci_max_artifact_size_cyclonedx1 MB

例えば、セルフマネージドインストールでci_max_artifact_size_junit の上限を 10 MB に設定するには、GitLab Rails コンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_max_artifact_size_junit: 10)

GitLab Pages ウェブサイトごとのファイル数

ファイルエントリーの総数(ディレクトリとシンボリックリンクを含む)は、GitLab Pagesウェブサイトごとに200,000

これは全てのGitLabセルフマネージドプランとSaaSプランのデフォルト制限です。

GitLab Railsコンソールを使ってセルフマネージドインスタンスのリミットを更新することができます。例えば、リミットを100 に変更するには :

Plan.default.actual_limits.update!(pages_file_entries: 100)

GitLab Pagesウェブサイトごとのカスタムドメイン数

GitLab Pagesウェブサイトあたりのカスタムドメインの合計数は、GitLab SaaSでは150

GitLabセルフマネージのデフォルトの上限は0 (無制限)です。セルフマネージドインスタンスに制限を設定するには、管理エリアをご利用ください。

スコープごとの登録ランナー数

  • GitLab 13.12で導入。デフォルトでは無効。
  • GitLab 14.3でGitLab.comで有効に。
  • GitLab 14.4でセルフマネージドで有効。
  • GitLab 14.4で機能フラグci_runner_limits が削除されました。
  • GitLab 14.6で機能フラグci_runner_limits_override が削除されました。

登録ランナーの総数は、グループとプロジェクトレベルで制限されています。新しいRunnerが登録されるたびに、GitLabは過去3ヶ月間にアクティビティがあったRunnerに対してこれらの制限をチェックします。ランナー登録トークンによって決定されたスコープの制限値を超えた場合、ランナーの登録は失敗します。リミットの値がゼロに設定されている場合、リミットは無効になります。

GitLab SaaS サブスクライバーは、プランごとに異なるリミットが定義されており、そのプランを使用しているすべてのプロジェクトに影響します。

セルフマネジメントのGitLab PremiumとUltimateの上限は、すべてのプロジェクトに影響するデフォルトのプランによって定義されます:

Runner スコープデフォルト値
ci_registered_group_runners1000
ci_registered_project_runners1000

これらの制限値を更新するには、GitLab Railsコンソールで以下を実行します:

# Use ci_registered_group_runners or ci_registered_project_runners
# depending on desired scope
Plan.default.actual_limits.update!(ci_registered_project_runners: 100)

ジョブログの最大ファイルサイズ

GitLabのジョブログファイルサイズの上限はデフォルトで100メガバイトです。制限を超えたジョブは失敗とマークされ、ランナーによって削除されます。

GitLab Rails コンソールで制限を変更することができます。ci_jobs_trace_size_limit をメガバイト単位の新しい値で更新してください:

Plan.default.actual_limits.update!(ci_jobs_trace_size_limit: 125)

GitLab Runner にはoutput_limit 設定 もあり、runner の最大ログサイズを設定します。Runner の制限を超えたジョブは実行され続けますが、制限に達するとログは切り捨てられます。

プロジェクトごとにアクティブなDASTプロファイルスケジュールの最大数

GitLab 14.3で導入されました

プロジェクトごとにアクティブなDASTプロファイルスケジュールの数を制限します。DASTプロファイルスケジュールは、アクティブまたは非アクティブにすることができます。

GitLab Railsコンソールで制限を変更できます。新しい値でdast_profile_schedules を更新してください:

Plan.default.actual_limits.update!(dast_profile_schedules: 50)

CI/CD 設定 YAML ファイルの最大サイズと深さ

1つのCI/CD設定YAMLファイルのデフォルトの最大サイズは1メガバイトで、デフォルトの深さは100です。

これらの制限はGitLab Rails コンソールで変更できます:

  • 最大 YAML サイズを更新するには、max_yaml_size_bytes を更新して新しい値をメガバイト単位で指定します:

     ApplicationSetting.update(max_yaml_size_bytes: 2.megabytes)
    

    max_yaml_size_bytes の値は YAML ファイルのサイズに直接関連するのではなく、関連オブジェクトに割り当てられたメモリに関連します。

  • 最大 YAML 深さを更新するには、max_yaml_depth を行数で表した新しい値で更新します:

     ApplicationSetting.update(max_yaml_depth: 125)
    

CI/CD設定全体の最大サイズ

含まれるすべてのYAML設定ファイルを含むパイプライン設定全体に割り当てられるメモリの最大量をバイト単位で指定します。

新しいセルフマネージドインスタンスの場合、デフォルトは157286400 バイト (150 MB) です。

GitLab 16.3以降にアップグレードした既存のセルフマネージドインスタンスの場合、デフォルトはmax_yaml_size_bytes (デフォルト1 MB)ci_max_includes (デフォルト150)を掛け合わせて計算されます。両方の制限が変更されていない場合、デフォルトは1 MB x 150 =157286400 bytes (150 MB)に設定されます。

この制限はGitLab Railsコンソールから変更できます。CI/CD設定に割り当てられる最大メモリを更新するには、ci_max_total_yaml_size_bytes を新しい値で更新します。例えば、20MBに設定する場合:

ApplicationSetting.update(ci_max_total_yaml_size_bytes: 20.megabytes)

dotenv 変数の制限

GitLab 14.5 で導入されました

dotenvアーティファクト内の変数数の上限を設定できます。この制限は、dotenvファイルがアーティファクトとしてエクスポートされるたびにチェックされます。

制限を無効にするには、制限を0 に設定します。セルフマネージドインスタンスのデフォルトは20 です。

セルフマネージドインスタンスでこのリミットを100 に設定するには、GitLab Rails コンソールで以下のコマンドを実行します:

Plan.default.actual_limits.update!(dotenv_variables: 100)

この制限はGitLab.com で有効になっています。

dotenv ファイルサイズの制限

GitLab 14.5 で導入されました

dotenvアーティファクトの最大サイズの制限を設定できます。この制限は、dotenvファイルがアーティファクトとしてエクスポートされるたびにチェックされます。

制限を無効にするには、0 に設定します。デフォルトは 5 KB です。

セルフマネージドインストールでこの制限を 5 KB に設定するには、GitLab Rails コンソールで以下を実行します:

Plan.default.actual_limits.update!(dotenv_size: 5.kilobytes)

CI/CDジョブのアノテーションを制限します。

GitLab 16.3 で導入されました

CI/CDジョブごとにアノテーションの最大数を設定できます。

制限を無効にするには、0 に設定します。セルフマネージドインスタンスのデフォルトは20 です。

セルフマネージドインスタンスでこのリミットを100 に設定するには、GitLab Rails コンソールで以下のコマンドを実行します:

Plan.default.actual_limits.update!(ci_job_annotations_num: 100)

CI/CD ジョブアノテーションファイルサイズの制限

GitLab 16.3 で導入されました

CI/CDジョブアノテーションの最大サイズを設定できます。

制限を無効にするには、0 に設定します。デフォルトは 80 KB です。

セルフマネージドインストールでこの制限を100KBに設定するには、GitLab Railsコンソールで以下を実行します:

Plan.default.actual_limits.update!(ci_job_annotations_size: 100.kilobytes)

インスタンスのモニタリングとメトリクス

受信インシデント管理アラートの制限

この設定は、一定期間の受信アラートペイロードの数を制限します。

インシデント管理レートの制限の詳細については、こちらをご覧ください。

Prometheus アラート JSON ペイロード

notify.json エンドポイントに送信される Prometheus アラートペイロードのサイズは 1 MB に制限されています。

一般的なアラートJSONペイロード

notify.json エンドポイントに送信されるアラートペイロードのサイズは 1 MB に制限されています。

メトリクスダッシュボードのYAMLファイル

解析されたメトリクス・ダッシュボード YAML ファイルが占有するメモリは、1 MB を超えてはなりません。

それぞれの YAML ファイルの最大深度は 100 に制限されます。YAML ファイルの最大深度はもっともネストされたキーのネスト量です。もっともネストされたキーのパス上のそれぞれのハッシュと配列はその深さにカウントされます。たとえば、次の YAML のもっともネストされたキーの深さは 7 です:

dashboard: 'Test dashboard'
links:
- title: Link 1
  url: https://gitlab.com
panel_groups:
- group: Group A
  priority: 1
  panels:
  - title: "Super Chart A1"
    type: "area-chart"
    y_label: "y_label"
    weight: 1
    max_value: 1
    metrics:
    - id: metric_a1
      query_range: 'query'
      unit: unit
      label: Legend Label

環境ダッシュボードの制限

表示されるプロジェクトの最大数については、環境ダッシュボードを参照してください。

デプロイボード上の環境データ

デプロイボードでは、Kubernetesからポッドやデプロイに関する情報を読み込みます。ただし、Kubernetesから読み込んだ特定の環境の10MB以上のデータは表示されません。

マージリクエスト

差分の制限

GitLab には制限があります:

上限と下限がそれぞれに適用されます:

  • 変更されたファイルの数。
  • 変更された行数。
  • 表示される変更の累積サイズ。

下限値を設定すると、追加の差分が折りたたまれます。上限を高くすると、それ以上の変更がレンダリングされなくなります。これらの制限についての詳細は、開発者のドキュメントをご覧ください。

マージリクエストレポートのサイズ制限

20 MB を超えるレポーターが読み込まれません。影響を受けるレポーター:

高度な検索制限

インデックスされる最大ファイルサイズ

Elasticsearch でインデックスされるリポジトリファイルの内容に上限を設定することができます。この制限を超えるサイズのファイルはファイル名のみがインデックスされます。ファイルの内容はインデックスされず、検索もできません。

上限を設定することで、インデックス作成プロセスのメモリ使用量を減らし、インデックス全体のサイズを小さくすることができます。この値のデフォルトは1024 KiB (1 MiB) です。 これより大きなテキストファイルは、人間が読むことを想定していない可能性が高いからです。

無制限のファイルサイズはサポートされていないので、制限を設定する必要があります。この値をGitLab Sidekiqノードのメモリ量より大きく設定すると、GitLab Sidekiqノードがメモリ不足になる原因になります。インデックス作成中にこの量のメモリが事前に割り当てられるからです。

最大フィールド長

詳細検索でインデックスされるテキストフィールドの内容に上限を設定することができます。最大値を設定することで、インデックス作成処理の負荷を軽減することができます。テキストフィールドがこの制限を超えた場合、テキストはこの文字数まで切り詰められます。残りのテキストはインデックスされず、検索できません。これは、インデックスが作成されるリポジトリファイルを除く、インデックスが作成されるすべてのデータに適用されます。詳しくは、インデックスされる最大ファイルサイズ をご覧ください。

  • GitLab.comでは、フィールドの長さの制限は20,000文字です。
  • 自分で管理するインストールでは、フィールドの長さはデフォルトで無制限です。

Elasticsearch を有効にする際に、セルフマネージドインストールに対してこの制限を設定することができます。制限を無効にするには、0 に設定してください。

Wikiの制限

スニペット制限

スニペット設定に関するドキュメントをご覧ください。

デザイン管理の制限

イシューにデザインを追加するセクションの制限を参照してください。

プッシュ・イベントの制限

最大プッシュサイズ

最大プッシュサイズは5GBに設定されています。

Webhookとプロジェクトサービス

一回のプッシュにおける変更(ブランチやタグ)の総数。指定した制限を超える変更があった場合、フックは実行されません。

より詳しい情報はこれらのドキュメントをご覧ください:

アクティビティ

個別のプッシュイベントを作成するか、一括プッシュイベントを作成するかを決定するための、1回のプッシュにおける変更(ブランチまたはタグ)の総数。

詳細については、プッシュイベントのアクティビティ制限と一括プッシュイベントのドキュメントを参照してください。

パッケージのレジストリ制限

ファイルサイズの制限

GitLabパッケージレジストリにアップロードされるパッケージのデフォルトの最大ファイルサイズはフォーマットによって異なります:

  • Conan: 3 GB
  • ジェネリック: 5 GB
  • Helm: 5 MB
  • メイヴン: 3 GB
  • npm: 500 MB
  • NuGet: 500 MB
  • PyPI: 3 GB
  • Terraform:1 GB

GitLab.comの最大ファイルサイズは異なる場合があります。

自分で管理するインストールでこれらの制限を設定するには、GitLab Rails コンソールで以下を実行します:

# File size limit is stored in bytes

# For Conan Packages
Plan.default.actual_limits.update!(conan_max_file_size: 100.megabytes)

# For npm Packages
Plan.default.actual_limits.update!(npm_max_file_size: 100.megabytes)

# For NuGet Packages
Plan.default.actual_limits.update!(nuget_max_file_size: 100.megabytes)

# For Maven Packages
Plan.default.actual_limits.update!(maven_max_file_size: 100.megabytes)

# For PyPI Packages
Plan.default.actual_limits.update!(pypi_max_file_size: 100.megabytes)

# For Debian Packages
Plan.default.actual_limits.update!(debian_max_file_size: 100.megabytes)

# For Helm Charts
Plan.default.actual_limits.update!(helm_max_file_size: 100.megabytes)

# For Generic Packages
Plan.default.actual_limits.update!(generic_packages_max_file_size: 100.megabytes)

任意のファイルサイズを許可するために、制限を0 に設定します。

返されるパッケージのバージョン

指定されたNuGetパッケージ名のバージョンを問い合わせると、GitLabパッケージレジストリは最大300バージョンを返します。

依存プロキシの制限

GitLab 14.5 で導入されました

依存プロキシにキャッシュされるイメージの最大ファイルサイズは、ファイルの種類によって異なります:

  • 画像ブロブ: 5 GB
  • イメージマニフェスト10 MB

最大担当者数およびレビュアー数

  • GitLab 15.6 で導入された最大担当者数。
  • GitLab 15.9 で導入された最大レビュアー数。

イシューとマージリクエストはこの上限を強制します:

  • 担当者の最大数:200
  • 最大レビュアー数:200名

GitLab.com での CDN ベースの制限

アプリケーションベースの制限に加えて、GitLab.comはSSH経由でGitを保護するためにCloudflareの標準的なDDoS保護とSpectrumを使用するように設定されています。CloudflareはクライアントのTLS接続を終了させますが、アプリケーションを認識しないため、ユーザーやグループに結びついた制限には使用できません。CloudflareのページルールとレートリミットはTerraformで設定します。これらの設定は、悪意のあるアクティビティを検出するセキュリティと不正利用の実装が含まれており、公開するとそれらのオペレーションが損なわれるため、公開されていません。

コンテナリポジトリのタグ削除制限

コンテナリポジトリのタグはコンテナレジストリにあるため、タグを削除するたびにコンテナレジストリへのネットワークリクエストが発生します。このため、1回のAPIコールで削除できるタグの数を20個に制限しています。

プロジェクトレベルの Secure Files API の制限

GitLab 14.8で導入されました

セキュアファイルAPIは以下の制限を実施します:

  • ファイルは 5 MB 未満でなければなりません。
  • プロジェクトには100を超えるセキュアなファイルを含めることはできません。

Changelog API の制限

変更ログAPIは以下の制限を実施します:

  • from からto までのコミット範囲は 15000 を超えることはできません。

バリューストリームアナリティクスの制限

  • 各ネームスペース(グループやプロジェクトなど)は、最大 50 のバリューストリームを持つことができます。
  • 各バリュー・ストリームは、最大 15 のステージを持つことができます。

すべてのインスタンス制限のリスト

すべてのインスタンスリミットの値を一覧表示するには、GitLab Railsコンソールから以下を実行します:

Plan.default.actual_limits

サンプル出力:

id: 1,
plan_id: 1,
ci_pipeline_size: 0,
ci_active_jobs: 0,
project_hooks: 100,
group_hooks: 50,
ci_project_subscriptions: 3,
ci_pipeline_schedules: 10,
offset_pagination_limit: 50000,
ci_instance_level_variables: "[FILTERED]",
storage_size_limit: 0,
ci_max_artifact_size_lsif: 100,
ci_max_artifact_size_archive: 0,
ci_max_artifact_size_metadata: 0,
ci_max_artifact_size_trace: "[FILTERED]",
ci_max_artifact_size_junit: 0,
ci_max_artifact_size_sast: 0,
ci_max_artifact_size_dependency_scanning: 350,
ci_max_artifact_size_container_scanning: 150,
ci_max_artifact_size_dast: 0,
ci_max_artifact_size_codequality: 0,
ci_max_artifact_size_license_management: 0,
ci_max_artifact_size_license_scanning: 100,
ci_max_artifact_size_performance: 0,
ci_max_artifact_size_metrics: 0,
ci_max_artifact_size_metrics_referee: 0,
ci_max_artifact_size_network_referee: 0,
ci_max_artifact_size_dotenv: 0,
ci_max_artifact_size_cobertura: 0,
ci_max_artifact_size_terraform: 5,
ci_max_artifact_size_accessibility: 0,
ci_max_artifact_size_cluster_applications: 0,
ci_max_artifact_size_secret_detection: "[FILTERED]",
ci_max_artifact_size_requirements: 0,
ci_max_artifact_size_coverage_fuzzing: 0,
ci_max_artifact_size_browser_performance: 0,
ci_max_artifact_size_load_performance: 0,
ci_needs_size_limit: 2,
conan_max_file_size: 3221225472,
maven_max_file_size: 3221225472,
npm_max_file_size: 524288000,
nuget_max_file_size: 524288000,
pypi_max_file_size: 3221225472,
generic_packages_max_file_size: 5368709120,
golang_max_file_size: 104857600,
debian_max_file_size: 3221225472,
project_feature_flags: 200,
ci_max_artifact_size_api_fuzzing: 0,
ci_pipeline_deployments: 500,
pull_mirror_interval_seconds: 300,
daily_invites: 0,
rubygems_max_file_size: 3221225472,
terraform_module_max_file_size: 1073741824,
helm_max_file_size: 5242880,
ci_registered_group_runners: 1000,
ci_registered_project_runners: 1000,
ci_daily_pipeline_schedule_triggers: 0,
ci_max_artifact_size_cluster_image_scanning: 0,
ci_jobs_trace_size_limit: "[FILTERED]",
pages_file_entries: 200000,
dast_profile_schedules: 1,
external_audit_event_destinations: 5,
dotenv_variables: "[FILTERED]",
dotenv_size: 5120,
pipeline_triggers: 25000,
project_ci_secure_files: 100,
repository_size: 0,
security_policy_scan_execution_schedules: 0,
web_hook_calls_mid: 0,
web_hook_calls_low: 0,
project_ci_variables: "[FILTERED]",
group_ci_variables: "[FILTERED]",
ci_max_artifact_size_cyclonedx: 1,
rpm_max_file_size: 5368709120,
pipeline_hierarchy_size: 1000,
ci_max_artifact_size_requirements_v2: 0,
enforcement_limit: 0,
notification_limit: 0,
dashboard_limit_enabled_at: nil,
web_hook_calls: 0,
project_access_token_limit: 0,
google_cloud_logging_configurations: 5,
ml_model_max_file_size: 10737418240,
limits_history: {}

Railsコンソールのフィルタリングにより、制限値の一部がリスト内で[FILTERED]