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

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

場景復現

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

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/gitlab-ce/issues/12629git

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

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

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

問題出現緣由

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

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

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

新的解決辦法

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

具體操做步驟:gitlab

  • 提交public key到Gitlab的帳戶下
這一步ssh key的生成和提交能夠參考個人這邊博客:[GitHub——ssh免密登陸](https://www.liumapp.com/articles/2018/08/26/1535294584243.html)複製代碼
  • 變動項目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 ,問題解決
複製代碼
相關文章
相關標籤/搜索