一次Git克隆时报early EOF错误的处理

故障描述:一台Web服务器使用Docker宿主NGINX和GitLab服务。其中NGINX、GitLab分别位于两个不同的Docker容器内。某次更新后,客户端克隆一个体积较大的Git仓库时,服务器返回“fatal: early EOF”、“the remote end hung up unexpectedly”、“index-pack failed”错误。

故障排查:

在不同的网络环境中复现错误后,首先使用Web确定GitLab可以正常访问,同时使用管理员登录,检查GitLab Web管理面板中对项目及文件大小的限制参数,均远大于用户试图提交的仓库的尺寸。

在客户机上尝试配置Git缓存:

git config --global http.postBuffer 2096152000
git config --global core.compression -1
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 245245

发现故障继续,使用SSH登录远程服务器,检查容器状态:

docker ps

所有容器正确运行,使用docker ps给出的GitLab容器ID进入GitLab容器的Shell:

docker exec -it ID_OF_GITLAB_CONTAINER /bin/sh

检查位于/etc/gitlab/gitlab.rb中的nginx['proxy_max_temp_file_size']属性的值:

vi /etc/gitlab/gitlab.rb

并修改为0(无限制)

nginx['proxy_max_temp_file_size'] = 0

ESC键并输入“:wq”指令,按回车保存并退出VI,重新配置GitLab:

gitlab-ctl reconfigure
gitlab-ctl hup nginx

发现故障继续,故使用exit指令退到远程服务器Shell,进入NGINX容器的Shell:

docker exec -it ID_OF_NGINX_CONTAINER /bin/sh

检查NGINX配置文件/etc/nginx/nginx.conf

vi /etc/nginx/nginx.conf

http {}结点中,添加下列行,修改proxy_max_temp_file_size0(无限制):

    proxy_max_temp_file_size 0;

ESC键并输入“:wq”指令,按回车保存并退出VI,重新配置NGINX:

nginx -s reload

要求客户再次尝试克隆,问题解决。

参考资料:

https://www.zhihu.com/question/459368786

it
除非特别注明,本页内容采用以下授权方式: Creative Commons Attribution-ShareAlike 3.0 License