【问题标题】:Repo sync hangs回购同步挂起
【发布时间】:2010-01-19 06:09:55
【问题描述】:

我试图获取 Android 1.6 版本的源代码,但 repo 同步操作一直挂起。

我在此处粘贴我在终端上收到的消息的最后一部分:

Fetching projects:  19% (32/164)
Initializing project platform/external/freetype ...
remote: Counting objects: 970, done.
remote: Compressing objects: 100% (414/414), done.
Receiving objects:  57% (558/970), 1.28 MiB | 26 KiB/s

它只是挂在那里......没有错误消息或类似的东西。

有没有人遇到过类似的问题?

【问题讨论】:

  • 我在我的 Ubuntu 12 LTS x86 机器上遇到了这个问题。当git 产生并最大化 CPU 时,它似乎一直在对单个对象进行轰炸。我试过禁用 TCP 窗口缩放并限制到一个线程,但没有骰子。

标签: android git repository sync


【解决方案1】:

我想知道您是否正在使用 VMWare 来运行 Linux。在找到导致它的原因之前,我遇到了与您相同的问题:我们这边的 tcp 窗口大小设置为 0(满)。我在 Windows 7 64 位作为主机的 VMWare 上运行 Ubuntu 10.04。要修复它,只需确保在 VMWare 上为 Ubuntu 提供足够的 RAM 以丢弃任何内存问题。我将我的设置为 512MB 并将其增加到 1.5M 以获得更好的性能。然后是最重要的设置(也是真正起作用的设置):确保将 VMWare 上的网络适配器设置为桥接模式。例如,如果使用 NAT,NAT 服务将为您阻塞和弄乱窗口大小。

原因: 客户端的 TCP 窗口大小告诉服务器它愿意一次从服务器接收的字节数;这是客户端的接收窗口。当窗口设置为 0 时,意味着客户端将无法接收更多数据,直到它处理其内部缓冲区中仍待处理的任何数据。这是正常的 TCP 东西。在客户端上设置为 0 的窗口的大小影响是 TCP 连接仍将存活一段时间,直到服务器决定他已经等待足够多并终止连接。这就是导致我的 repo 同步挂起而没有错误的原因。

【讨论】:

  • 谢谢,这对我有用。桥接连接解决了这个问题。
  • 我正在使用 VirtualBox,但是在切换到桥接连接后,我仍然遇到同样的问题。
  • 为了给这个答案增加一些有效性,现在由 android 记录:source.android.com/source/known-issues.html
【解决方案2】:

希望这有助于有人推荐这个论坛。

我遇到过大型存储库的 git 克隆问题。最初速度会很高,然后急剧下降,最后挂起。这是 TCP 窗口缩放的问题。一旦被禁用,它就可以正常工作了。

(但奇怪的是,当我在 VMWare 中从 Linux 运行它时,没有任何问题。)

为当前会话禁用此功能 $ sudo sysctl -w net.ipv4.tcp_window_scaling=0

【讨论】:

  • 为了给这个答案增加一些有效性,这现在由 android 记录:source.android.com/source/known-issues.html
  • 这为我修好了,谢谢。不知何故,当我查看已知问题页面时,我没有发现那里注意到这一点。奇怪的是 repo 无法从失败的同步中恢复。
【解决方案3】:

back in September on SO也有类似问题。

它可能与网络速度有关,或与您正在使用的 Git 的确切版本相关联。
如果是msysgit,请更新到最新版本。
另见msysgit issue 361

【讨论】:

    猜你喜欢
    • 2010-10-12
    • 1970-01-01
    • 2021-11-08
    • 2017-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多