github - 通过 HTTPS 或 SSH 克隆时的带宽差异

标签 github

我凭经验注意到通过 HTTPS (~500 KB/s) 和 SSH (>10 MB/s) 克隆 Github 存储库之间存在显着的带宽差异。

在发布周期中,我经常执行几个 git clone,默认配置为使用 HTTPS(如 git clone https://...),因为它不需要身份验证并且对用户来说更简单。

但是,存储库包含大约 100 MB(由于多个版本、一些二进制文件等),因此由于带宽限制,此命令需要几分钟时间。如果我将 git clone 命令更改为使用 git://...,它会以 10 MB/s 以上的速度下载,因此只需不到 10 秒。

理想情况下,存储库应该更小,但无论如何,我想告知用户这种差异,让他们引用官方文档,但帮助页面 Which remote URL should I use?完全没提,this SO question 也没有. rate limit rules也不要提及带宽(而且我远低于他们,所以这不太可能是问题)。

所以我想知道:每个人都知道这种行为并且可以重现吗?我是否会看到一些特定的带宽限制(可能是在短时间内完成了几次 git clone 之后)?我想有一个官方来源来推荐用户。

最佳答案

Could I be seeing some specific bandwidth throttling (possibly after having done several git clones in a short period of time)?

是的,虽然 GitHub 支持是正确的,但它不是带宽限制。您会看到CPU 节流。 GitHub 不受网络限制,但在克隆存储库时受 CPU 限制,因为计算要交付给您的包文件并压缩以进行交付的成本很高。

正如 Patrick Reynolds 所讨论的 in his talk at Git Merge 2016 , GitHub 对特定用户从特定 IP 到特定存储库的并发 Git 操作数量进行了限制,以避免您对文件服务器进行 DoS。这可以从您正在做的事情中看出,这是避免“雷声从众问题”。

正如帕特里克所说,“唯一达到这个限制的是脚本......”而经常达到这些限制的是“克隆以实现持续集成”。简而言之,GitHub 分析用于克隆该存储库的先前 CPU 时间,并假设 future 的克隆将花费类似的时间。当您同时克隆其中几个时,GitHub 会计算这些克隆总数的预期 CPU 时间。如果您超过了给定的配额,其中一些克隆将被延迟。

这可确保您的多个克隆不会影响系统上的其他用户。

那么,为什么您会看到这些影响是 HTTPS 而不是 SSH?因为经过身份验证的用户比未经身份验证的用户拥有更高的配额。我怀疑如果您使用 HTTPS 进行身份验证,您会看到两种协议(protocol)之间的响应时间相似。

关于github - 通过 HTTPS 或 SSH 克隆时的带宽差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50462726/

相关文章:

github - 克隆和下载之间的区别

nginx - Github webhook 的 Jenkins 自动构建不起作用

reactjs - 在同一个存储库中的 github 页面前端和后端上部署 React 应用程序

git - 在 Github 中推送新代码的问题

ruby - 如何将项目 readme.md 读入 user.github.com 站点?

swift - 我该如何正确使用这个Github项目呢?

git - 什么时候在 git 中实现了一个特定的功能?

version-control - Github Issues 和 Netbeans 之间的集成

linux - git push 两步验证失败的解决方法(linux)

github - 如何在特定提交时查看github页面?