Github 通过HTTPS或SSH克隆时的带宽差异
根据经验,我注意到通过HTTPS(~500kb/s)和SSH(>10mb/s)克隆Github存储库之间的带宽差异很大 在一个发布周期中,我经常执行几个Github 通过HTTPS或SSH克隆时的带宽差异,github,Github,根据经验,我注意到通过HTTPS(~500kb/s)和SSH(>10mb/s)克隆Github存储库之间的带宽差异很大 在一个发布周期中,我经常执行几个git clones,默认情况下,它们被配置为使用HTTPS(如,git clone)https://...),因为它不需要身份验证,而且对用户来说更简单 但是,存储库包含大约100 MB(由于有几个版本、一些二进制文件等),因此由于带宽限制,此命令需要几分钟的时间。如果我将git clone命令更改为使用git://...,下载速度超过10 M
git clone
s,默认情况下,它们被配置为使用HTTPS(如,git clone)https://...
),因为它不需要身份验证,而且对用户来说更简单
但是,存储库包含大约100 MB(由于有几个版本、一些二进制文件等),因此由于带宽限制,此命令需要几分钟的时间。如果我将git clone
命令更改为使用git://...
,下载速度超过10 MB/s,因此所需时间不到10秒
理想情况下,存储库应该更小,但无论如何,我想告诉用户这一区别,让他们参考官方文档,但帮助页面根本没有提到,也没有提到。这个问题也没有提到带宽(我远远低于它们,所以这不太可能成为问题)
所以我想知道:这一行为是否为每个人所知并可复制?我是否会看到某些特定的带宽限制(可能是在短时间内完成了几次
git clone
s之后)?我希望有一个官方消息来源供用户参考。我最终联系了Github支持部门,该部门回复:
我们没有在HTTPS和SSH之间设置带宽上限
因此,任何观察到的差异都必须是局部的
尽管如此,如果性能对用户来说真的很重要,那么告诉他们协议可能有不同的速度可能会很有用,他们应该同时尝试这两种协议,看看哪一种最适合他们
我是否会看到一些特定的带宽限制(可能是在短时间内完成了几个git克隆之后)
是,尽管GitHub支持是正确的,因为它不是带宽限制。您将看到CPU节流。GitHub不受网络限制,但它受克隆存储库的CPU限制,因为计算要交付给您的packfile并压缩它以进行交付是非常昂贵的
正如Patrick Reynolds所讨论的,GitHub限制了特定用户从特定IP到特定存储库的并发Git操作的数量,以避免您拒绝文件服务器。这可以从你正在做的事情中看出,这就是避免“雷鸣般的羊群问题”
正如Patrick所指出的,“唯一达到这个极限的是脚本…”,而经常达到这些极限的是“为持续集成而克隆”。简而言之,GitHub分析了以前用于克隆该存储库的CPU时间,并假设将来的克隆将花费类似的时间。当您同时克隆其中的几个克隆时,GitHub将计算这些克隆总数的预期CPU时间。如果您超过了给定的配额,其中一些克隆将被延迟
这可确保多个克隆不会影响系统上的其他用户
那么,为什么使用HTTPS而不是SSH会产生这些影响呢?因为经过身份验证的用户的配额高于未经身份验证的用户。我怀疑如果您使用HTTPS进行身份验证,您会看到两个协议之间的响应时间相似。也许这会有所帮助:澄清一下,实际上我没有克隆很多协议,只是每隔几分钟克隆一次,总共不到10次,所以我不确定是否应用了CPU节流。事实上,HTTPS似乎被限制为一个“舍入”数字(500KB/s),这让我想到了带宽上限。尽管如此,我还是尝试了克隆它(在上次尝试之后的几天),得到了223kb/s的HTTPS和119kb/s的SSH。所以我看不出有可重复的模式。总的来说,我们的存储库并不是那么有名,所以不需要特别考虑;我从您的问题推断,当您执行多个
clone
s时,您是同时执行的。所以我同意你可能没有触发节流。