在Windows 2003服务器上,git pull非常缓慢(不包括ssh传输部分)

4
我有一个问题,需要帮助调试特定服务器。服务器上安装了git扩展2.3.1附带的git版本1.7.10.msysgit.1,cwRsync(基于Cygwin 1.7)也已安装。服务器是VMWare虚拟机,负载相对较高,运行Windows 2003 Standard R2 SP2系统。主要问题是使用git pull命令(无论是通过git extensions还是git bash)拉取非常小的代码库(600k和26个文件)时需要几分钟,并且在此期间CPU负载会飙升到接近100%(针对1个CPU),任务管理器将此负载归因于“System”。需要注意的是,git在服务器上原本执行所有操作都很慢,但是通过删除$PS1中的__git_ps1之后,执行速度得到了显著提高。进行git clone,git push和本地git操作仍然相当缓慢(每次需要5-10秒),但至少可以用。在进行git pull过程中不会出现任何错误报告,功能性完成成功。通过数据包捕获,git pull进程的SSH通信在80%完成后开始进行,只需几秒钟即可完成。手动使用ssh登录或者pull文件时,使用Plink、原始SSH(随附的ssh 4.6p1 openSSL 0.9.8e)或最新的替代品SSH(5.9p1 OpenSSL 0.9.8s)似乎也没有问题。这个问题可能与网络或SSH无关,因为在另一台服务器上运行相同的测试库时速度非常快。系统日志和git扩展日志中没有任何错误信息。我猜测Trend AV(但是不能更改它以排除它)可能是问题所在,但是使用同样的代码库在另一个服务器上运行测试时却很快。我怀疑git可能会扫描$HOME(该帐户下有NetHood子目录下的大量外部共享),但是使用另一个没有NetHood目录内容的帐户运行相同的测试并没有什么不同。鉴于这不是产品问题,我已经没了主意。考虑到我正在努力说服公司迁移到git,此类内部服务器问题确实不利于我的论据!

请问您能解释一下这句话的意思吗?“我通过更改$PS1以删除__git_ps1,显著改善了它。” - Alan Macdonald
这似乎是在谈论你的git目录中的/etc/profile文件。到目前为止,Windows不允许我编辑此文件以查看是否有所帮助。 - Alan Macdonald
3个回答

3

很遗憾,当运维人员没有回复时! :-( - cregox

1

帮助已经到来,使用提交d637d1b (适用于git 1.9.x/2.0,2014年第二季度):

我们对哈希表进行了改进,以满足msysgit fscache项目的需求,并获得了一些良好的性能提升。

git statusgit clone将从这个新的hasmap API中受益。


0
我也遇到了同样的问题,将msysgit升级到最新版本(1.9.5预览版20141217)解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接