You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行repo sync/git clone时出现Bad packet length错误的解决咨询

解决Repo Sync/Git Clone时Bad Packet Length错误及卡顿问题

问题场景

执行repo sync拉取大型项目时频繁触发Bad packet length xxxxx错误,git clone操作偶尔也会出现相同问题。尝试在~/.ssh/config中添加ControlMaster auto和ControlPersist yes后,错误信息不再显示,但同步操作依然卡顿。

环境信息:

  • 系统:Ubuntu 20.04.6 LTS
  • CPU/内存:32核,125G内存
  • Repo版本:2.45(launcher)
  • Git版本:2.25.1

错误日志示例:

yangbinbin@pvt-BianYiJi012:~/8678_single$ repo sync -c -f -j4 --no-repo-verify --optimized-fetch
warning: -f/--force-broken is now the default behavior, and the options are deprecated
Fetching: 68% (1268/1862) 25:05 | 4 jobs | 8:08 platform/prebuilts/clang/host/linux-x86 @ prebuilts/clang/host/linux-x86Bad packet length 2647955583.
Finished discarding for 192.168.1.234 port 29415

解决方法

1. 优化SSH连接配置

修改~/.ssh/config,针对目标Gerrit服务器添加更稳定的连接参数:

Host 192.168.1.234
    ControlMaster auto
    ControlPersist 300s  # 设为具体时长,避免长期闲置连接卡顿
    Ciphers aes128-ctr,aes192-ctr,aes256-ctr  # 选用轻量稳定的加密算法
    MACs hmac-sha2-256,hmac-sha2-512
    Compression yes  # 启用压缩减少传输数据量

说明:高负载场景下,复杂加密算法容易引发数据包长度异常,轻量算法可降低连接出错概率;压缩能有效减少大型仓库的传输体积。

2. 降低Repo同步并发数

减少repo sync的-j参数值,从-j4调整为-j2或-j1:

repo sync -c -f -j2 --no-repo-verify --optimized-fetch

说明:过高的并发数会导致SSH连接池拥堵,引发数据包冲突或服务器端限流,降低并发可缓解连接压力。

3. 调整网络MTU值

过大的MTU可能导致数据包分片失败,引发Bad Packet错误。临时调整MTU(以网卡eth0为例):

sudo ifconfig eth0 mtu 1400

永久修改需编辑Netplan配置(如/etc/netplan/00-installer-config.yaml):

network:
  ethernets:
    eth0:
      mtu: 1400
      addresses: [192.168.1.x/24]
      gateway4: 192.168.1.1
      nameservers:
        addresses: [8.8.8.8]
  version: 2

执行sudo netplan apply生效。

4. 更新Git版本

当前Git 2.25.1存在部分SSH传输的已知bug,更新到稳定新版本:

sudo add-apt-repository ppa:git-core/ppa
sudo apt update && sudo apt install git -y

验证版本:git --version

5. 优化Repo缓存与日志

在~/.bashrc中添加环境变量,指定临时缓存目录并开启调试日志:

export REPO_CACHE_DIR=/tmp/repo-cache  # 用tmpfs加速缓存访问
export REPO_TRACE=1  # 开启trace日志,便于定位卡顿节点

执行source ~/.bashrc生效。

6. 检查服务器端Gerrit配置(若有权限)

登录Gerrit服务器,修改/etc/gerrit/sshd_config中的连接限制参数:

MaxSessions 10  # 单连接的最大会话数
MaxStartups 10:30:100  # 并发连接限制,10个连接后开始限流,超过100个拒绝

重启Gerrit服务:sudo service gerrit restart


内容的提问来源于stack exchange,提问作者user25382962

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:31:14