关于 GitHub Enterprise Server 的速率限制
若要防止在 你的 GitHub Enterprise Server 实例 上过度使用可能会影响实例对所有用户的可用性或性能的资源,可以配置速率限制。 可以配置 GitHub Enterprise Server APIs 和 GitHub Actions 的速率限制。
仔细实施速率限制,并在调整限制时经常与用户沟通。 为了避免中断用户的工作,GitHub 建议从允许的速率限制开始,并逐渐调整限制以适应你的环境。
还可以为对 管理控制台 的身份验证尝试配置速率限制。 有关详细信息,请参阅“管理对管理控制台的访问”。
为 GitHub Enterprise Server APIs 启用速率限制
对 GitHub Enterprise Server APIs 的请求过多可能会影响实例的可用性和性能。 有关 API 的速率限制如何影响用户的详细信息,请参阅“REST API 的速率限制”。
可使用管理 shell 中的 ghe-config
实用工具使用户列表免受 API 速率限制。 有关详细信息,请参阅“命令行实用程序”。
Note
管理控制台 列出了每种速率限制的时限(按分钟或按小时)。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“速率限制”下,选择“启用 HTTP API 速率限制”。
-
输入对每个 API 的已验证和未验证请求的限制,或者接受预先填入的默认限制。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
启用二级费率限制
设置辅助速率限制可保护 你的 GitHub Enterprise Server 实例 上的整体服务级别。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“速率限制”下,选择“启用二级速率限制”。
-
输入总请求限制、CPU 限制或对搜索的 CPU 限制,或接受预先填入的默认限制。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
启用 Git 速率限制
如果有 GitHub 的员工建议使用它,你可以按存储库网络或按用户 ID 应用 Git 速率限制。 Git 速率限制以每分钟并行操作数表示,不过会根据当前 CPU 负荷进行调整。
Warning
建议禁用此设置,除非有 GitHub 的员工建议使用。 Git 操作很少是导致 CPU 和 RAM 被使用的因素。 启用此功能会导致 Git 操作在高负载条件下的失败率增加,而无法确认这些情况发生的根本原因。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“速率限制”下,选择“启用 Git 速率限制”。
-
在“存储库网络限制”下,为每个存储库网络键入限制。
-
在“用户 ID 限制”下,键入每个用户 ID 的限制。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
配置 GitHub Actions 的速率限制
可以将速率限制应用于 GitHub Actions 工作流运行。 有关 GitHub Actions 的详细信息,请参阅“About GitHub Actions for enterprises”。
关于 GitHub Actions 的速率限制
GitHub Enterprise Server 实例将每个 GitHub Actions 工作流作业分配给运行器。 如果实例无法立即将作业分配给可用的运行器,作业将在队列中等待,直到运行器可用。 如果 GitHub Actions 遇到持续高负载,队列就可以备份,且 你的 GitHub Enterprise Server 实例 的性能可能会降低。
为了避免这种性能降低,可以配置 GitHub Actions 的速率限制。 此速率限制以每分钟作业运行数表示。 GitHub Enterprise Server 计算并应用实例上所有作业运行的总数的速率限制。 如果运行数超过速率限制,其他运行将失败,而不是进入队列。 以下错误将显示在运行的注释中。
已超出工作流运行请求的速率限制。 请稍等,然后重试运行。
适当的速率限制可保护 你的 GitHub Enterprise Server 实例 免受 GitHub Actions 的异常使用,而不会干扰日常操作。 确切的阈值取决于实例的可用资源和总体负载配置文件。 有关 GitHub Actions 硬件要求的详细信息,请参阅“GitHub Actions for GitHub Enterprise Server 使用入门”。
默认情况下,禁用 GitHub Actions 的速率限制。 由于 GitHub Enterprise Server 可以在不降低性能的情况下处理临时使用高峰,因此此速率限制旨在防止持续高负载。 建议将此速率限制保留禁用状态,除非遇到性能问题。 在某些情况下,GitHub 支持 可能会建议启用 GitHub Actions 的速率限制。
启用或禁用 GitHub Actions 的速率限制
-
通过 SSH 连接到 你的 GitHub Enterprise Server 实例。 如果实例包含多个节点,例如,如果配置了高可用性或异地复制,则通过 SSH 连接到主节点。 如果使用群集,则可以通过 SSH 连接到任何节点。 将 HOSTNAME 替换为实例的主机名,或节点的主机名或 IP 地址。 有关详细信息,请参阅“访问管理 shell (SSH)”。
Shell ssh -p 122 admin@HOSTNAME
ssh -p 122 admin@HOSTNAME
-
若要启用和配置速率限制,请运行以下两个命令,将 RUNS-PER-MINUTE 替换为所选值。
ghe-config actions-rate-limiting.enabled true ghe-config actions-rate-limiting.queue-runs-per-minute RUNS-PER-MINUTE
-
若要在启用速率限制后将其禁用,请运行以下命令。
ghe-config actions-rate-limiting.enabled false
-
若要应用配置,请运行以下命令。
ghe-config-apply
-
等待配置运行完毕。