乐趣区

Gitlaberror-RPC-failed-result22-HTTP-code-500解决

操作 Gitlab 进行日常代码推拉的过程中,突然遇到如标题所述异常,这篇博客记录这个问题的解决办法

场景复现

对 Gitlab 私有仓库进行代码 push 操作,产生如下异常信息:

Counting objects: 875, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (523/523), done.
Writing objects: 100% (875/875), 42.94 MiB | 9.72 MiB/s, done.
Total 875 (delta 206), reused 2 (delta 0)
error: RPC failed; result=22, HTTP code = 500
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

Gitlab 官方对此 issue 的反馈信息:https://gitlab.com/gitlab-org…

查看官方 issue 后,可以发现官方对此问题的解决方式基本是以下两种方案:

  • 更换 CentOS 操作系统为 Ubuntu
  • 更换 Nginx 引擎为 Tomcat

两种方案操作成本都很昂贵,不可接受

问题出现原因

因为 gitlab 本身自己封装了 nginx、redis 等工具,包括这些工具的配置也一并解决,所以在推代码的过程中,如果一次性提交的 commit 体积过大,超出 max package 的限定值,那么可能会产生上述异常

而绝对不是 nginx 或者操作系统本身的问题

但变更 gitlab 配置又是一件非常麻烦的事情,所以这里换一种思路:我们不依赖 http 协议进行上传,换用 ssh 协议便可以绕开这个问题

新的解决办法

新的解决办法:变更提交方式为 ssh 即可

具体操作步骤:

  • 提交 public key 到 Gitlab 的账户下

    这一步 ssh key 的生成和提交可以参考我的这边博客:GitHub——ssh 免密登录

  • 变更项目 remote 地址

    在项目路径下使用命令 git remote -v

    如果是以 http/https 形式上传代码的话,那么地址格式类似于:gitlab http://${your domain name}/liumapp/${your project name}.git (fetch)

    我们要做的,就是把它变更为以 ssh 形式进行上传,要将地址变更为类似:gitlab git@github.com:liumapp/${your project name}.git

    操作命令 git remote set-url gitlab git@${your domain name}:liumapp/${your project name}.git

    顺便一提,上面出现的 liumapp 请自行替换为自己的 gitlab 账号名称

  • 使用 ssh 推代码,git push,问题解决
退出移动版