Gitlab-error: RPC failed; result=22, HTTP code = 500解決

操做Gitlab進行平常代碼推拉的過程當中,忽然遇到如標題所述異常,這篇博客記錄這個問題的解決辦法

場景復現

對Gitlab私有倉庫進行代碼push操做,產生以下異常信息:html

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...nginx

查看官方issue後,能夠發現官方對此問題的解決方式基本是如下兩種方案:git

  • 更換CentOS操做系統爲Ubuntu
  • 更換Nginx引擎爲Tomcat

兩種方案操做成本都很昂貴,不可接受github

問題出現緣由

由於gitlab自己本身封裝了nginx、redis等工具,包括這些工具的配置也一併解決,因此在推代碼的過程當中,若是一次性提交的commit體積過大,超出max package的限定值,那麼可能會產生上述異常redis

而絕對不是nginx或者操做系統自己的問題app

但變動gitlab配置又是一件很是麻煩的事情,因此這裏換一種思路:咱們不依賴http協議進行上傳,換用ssh協議即可以繞開這個問題dom

新的解決辦法

新的解決辦法:變動提交方式爲ssh便可ssh

具體操做步驟:工具

  • 提交public key到Gitlab的帳戶下

    這一步ssh key的生成和提交能夠參考個人這邊博客:GitHub——ssh免密登陸gitlab

  • 變動項目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 ,問題解決
相關文章
相關標籤/搜索