我在 Ubuntu Server 12.0.4 上安装了 git,并与 gitlab 协同工作。Ubuntu 本身是 Hyper-V Server 2012 R2 中的虚拟机。
我正在比较命令的性能git clone git@my-server:group/repo.git
,所以它不是一个“本地 git”协议,而是始终是 SSH。
如果我通过 ssh 从同一台虚拟机克隆 - 速度显示为 ~15-20 MiB/s。从同一物理服务器上的其他虚拟机或同一 LAN 中的其他机器克隆 - 速度为 70-200 KiB/s,速度非常慢。我尝试过 Windows 和 Linux 机器。
我尝试谷歌搜索并发现这一,但这似乎不是一个问题:我尝试过 a) 使用 Putty 的 PLink;b) 在 Windows 上将 OpenSSH 更新到 2014 年 1 月版本,甚至 c) 使用 Linux 机 - 但没有成功。
我尝试过使用 iperf,这肯定不是网络问题:同一虚拟机管理程序中的虚拟机之间的连接速度为 ~300-400 Mb/s,虚拟机与 LAN 中的其他机器之间的连接速度为 ~10 Mb/s(100 Mbit 以太网连接)。
所以,我的问题是 - 我如何才能找到瓶颈在哪里?我现在没有主意了。
PS 这可能不是 SSH 问题 - 通过 http 克隆显示的速度几乎相同。
答案1
事实上,你可以从 gitlab VM 以 15 MB 的速度克隆,因此这很可能是虚拟机管理程序的网络抽象层的问题。
答案2
检查您的 DNS 设置/服务器。我遇到了这个问题,发现这是由于我的主 DNS 无法解析 git 服务器造成的。一旦我切换主 DNS,它就会加速。看来 git 不允许缓存 DNS 查询,因此每次都必须进行故障转移。
答案3
嗯,这是一个最令人困惑的问题。你有带宽限制在您的虚拟 NIC 端口上设置了什么?如果您设置了...那可能就是它了...
只是发布这个,因为你没有在你的 OP 中提到它,它可能是一个答案,但我不确定这是否是它。