我凭经验注意到通过 HTTPS (~500 KB/s) 和 SSH (>10 MB/s) 克隆 Github 存储库之间的显着带宽差异。
在发布周期中,我经常执行几个git clone
s,默认情况下配置为使用 HTTPS(如 ,git clone https://...
),因为它不需要身份验证并且对用户来说更简单。
但是,存储库包含大约 100 MB(由于多个版本、一些二进制文件等),因此由于带宽限制,此命令需要几分钟时间。如果我将git clone
命令更改为 use git://...
,它将以 10 MB/s 以上的速度下载,因此只需不到 10 秒。
理想情况下,存储库应该更小,但无论如何,我想通知用户这种差异,请他们参考官方文档,但帮助页面我应该使用哪个远程 URL?根本没有提到它,这个问题也没有。该速率限制规则不提任何带宽(和我在它们下面的方式,所以它不可能是问题)。
所以我想知道:这种行为对每个人来说都是已知的并且可以重现吗?我能看到一些特定的带宽限制git clone
吗(可能是在短时间内完成了几个s之后)?我想有一个官方来源来推荐用户。
我能看到一些特定的带宽限制吗(可能是在短时间内完成了几次 git 克隆之后)?
是的,虽然 GitHub Support 是正确的,因为它不是带宽限制。您会看到CPU 节流。GitHub 不受网络限制,但它在克隆存储库上受 CPU 限制,因为计算要交付给您的包文件并对其进行压缩以交付是昂贵的。
正如 Patrick Reynolds在他的 Git Merge 2016 演讲中所讨论的那样,GitHub 限制了特定用户从特定 IP 到特定存储库的并发 Git 操作数量,以避免您对文件服务器进行 DoS。这可以通过你正在做的事情看出,这是避免“雷鸣般的羊群问题”。
正如帕特里克指出的那样,“唯一达到这个限制的是脚本......”而经常达到这些限制的是“克隆以进行持续集成”。简而言之,GitHub 分析了先前用于克隆该存储库的 CPU 时间,并假设未来的克隆将花费类似的时间。当您同时克隆其中几个时,GitHub 会计算这些克隆总数的预期 CPU 时间。如果您超过给定的配额,其中一些克隆将被延迟。
这可确保您的多个克隆不会影响系统上的其他用户。
那么,为什么您会看到这些影响 HTTPS 而不是 SSH?因为经过身份验证的用户比未经身份验证的用户具有更高的配额。我怀疑如果您要使用 HTTPS 进行身份验证,您会看到两种协议之间的响应时间相似。
归档时间: |
|
查看次数: |
1299 次 |
最近记录: |