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

时间:2018-05-22 08:06:12

标签: 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也没有提到它。 {3}}。 rate limit rules也没有提到带宽(我在它们之下,所以它不太可能是问题)。

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

2 个答案:

答案 0 :(得分:1)

  

我是否可以看到一些特定的带宽限制(可能是在短时间内完成了几个git克隆之后)?

,虽然GitHub支持是正确的,因为它不是带宽限制。您正在看到 CPU限制。 GitHub不受网络限制,但它在克隆存储库上受CPU限制,因为计算打包文件以便交付给您并压缩它以便交付是昂贵的。

正如Patrick Reynolds讨论的in his talk at Git Merge 2016,GitHub限制了特定用户从特定IP到特定存储库的并发Git操作数,以避免DoS的文件服务器。这可以从你正在做的事情看出来,这避免了“雷鸣般的群体问题”。

帕特里克指出,“唯一能达到这个限制的是脚本......”而且经常遇到这些限制的事情就是“克隆持续集成”。简而言之,GitHub分析用于克隆该存储库的先前CPU时间,并假设未来的克隆将花费相似的时间。当您同时克隆其中几个时,GitHub会计算这些克隆总数的预期CPU时间。如果你超过给定的配额,那些克隆将会被推迟。

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

那么为什么你会看到这些影响使用HTTPS而不是SSH?由于经过身份验证的用户的配额高于未经身份验证的用户。我怀疑如果您使用HTTPS进行身份验证,您会看到两个协议之间的响应时间相似。

答案 1 :(得分:0)

我最终联系了Github支持部门,后者回复说:

  

我们没有在HTTPS和SSH之间设置带宽上限。

所以观察到的差异必须是本地的。

但是,如果性能对用户来说非常重要,那么告诉他们协议可能具有不同的速度并且他们应该尝试两者并看哪哪种最适合他们可能是有用的。