AWS CodeCommit大文件上传卡顿问题及与Elastic Beanstalk集成诉求
解决AWS CodeCommit大代码包上传卡顿挂起的方案
我之前也碰到过类似的大文件上传到CodeCommit卡顿的问题,结合AWS的最佳实践和自己的踩坑经验,给你几个可行的解决方案:
1. 调整Git的缓冲区及超时配置
你已经设置了http.postBuffer,但900MB的代码量可能需要更大的缓冲区,同时补充超时相关配置来避免中途挂起:
- 把缓冲区调至1GB(覆盖之前的设置):
git config --global http.postBuffer 1073741824 - 禁用分块传输编码,部分场景下能提升大文件上传稳定性:
git config --global http.chunkedTransferEncoding false - 增加Git的网络超时阈值,避免因临时网络波动触发中断:
git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 900
2. 排查并处理超大单个文件
CodeCommit对仓库总大小支持不错,但单个超大文件(比如超过100MB)是上传卡顿的常见诱因:
- 用命令找出仓库里的大文件:
git ls-files -s | sort -k 2 -n - 非必要的大文件(如日志、本地依赖包、临时二进制文件)直接加入
.gitignore排除;如果是业务必需的大文件,建议用Git LFS管理:- 安装Git LFS:
git lfs install - 追踪目标大文件类型:
git lfs track "*.zip"(替换成你的文件类型) - 提交
.gitattributes文件,再重新提交大文件
- 安装Git LFS:
3. 拆分提交批次
一次性推送900MB代码对网络和服务端都是不小的压力,拆分提交能降低风险:
- 先推送部分目录的代码(比如核心业务代码),确认上传成功后再推送剩余部分
- 或者先初始化仓库,上传一个空文件或小配置文件建立连接,再逐步推送其余代码
4. 切换至SSH协议上传
HTTPS协议在大文件上传时偶尔会出现兼容性问题,SSH协议通常更稳定:
- 在AWS IAM中生成并配置SSH密钥,关联到你的用户账号
- 修改仓库远程地址为SSH格式:
git remote set-url origin ssh://git-codecommit.<你的区域>.amazonaws.com/v1/repos/<仓库名>
5. 清理本地Git仓库冗余数据
本地仓库的冗余对象可能拖慢上传效率:
- 执行仓库优化命令清理冗余:
git gc --aggressive git prune
如果以上方法都没解决问题,可以开启Git的详细日志排查卡点:
GIT_CURL_VERBOSE=1 git push
这个命令会输出完整的HTTP请求日志,能帮你定位到具体是哪个环节出现了挂起。
内容的提问来源于stack exchange,提问作者Saurabh Aren
相关产品推荐
相关产品推荐

