[精讚] [會員登入]
130

[GITLAB] 解決git使用http/https clone或pull時在大小達1G時的斷線問題

git clone大專案時出現RPC failed; curl 18 transfer closed with outstanding read data remaining的錯誤,如何解決?

分享此文連結 //n.sfs.tw/16335

分享連結 [GITLAB] 解決git使用http/https clone或pull時在大小達1G時的斷線問題@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-01-21 12:01:05 最後編修
2024-01-21 03:08:45 By 張○○
 

事情是這樣的,我建了一個gitlab,平時就把寫的程式丟上去。

今天有一個移機的需求,這個專案很大,大約有10G的大小。

每當我在git pull 或是 clone 這個專案的時候,就出現了錯誤,如下面的橘色文字

# git pull http://example.com/myname/project.git
Username for 'http://example.com': myname
Password for 'http://myname@example.com':<打入密碼>
remote: Enumerating objects: 89044, done.
remote: Counting objects: 100% (632/632), done.
remote: Compressing objects: 100% (631/631), done.
Receiving objects:  5% (5245/89044), 0.60 GiB | 10.08 MiB/s  <== 這個會一直跳動直到出錯
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
error: 2803 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

當我試著去搜尋這個錯誤的解決方法時我得到以下的建議[1][2][3[4]]

git config --global http.postBuffer 524288000

git config --global http.version HTTP/1.1

git clone repo_url --depth 1

git fetch --unshallow

git config --global core.compression 0

echo 1 > /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal

export GIT_TRACE_PACKET=1
export GIT_TRACE=1
export GIT_CURL_VERBOSE=1

git config --global pack.windowMemory "100m"
git config --global pack.SizeLimit "100m"
git config --global pack.threads "1"
git config --global pack.window "0"

以上指令都是沒效的,浪費了不少時間,最後還得把設定清掉並重開機:

查看設定

$ git config --global -l

移除單一設定

$ git config --global --unset pack.threads

移除群組設定

$ git config --global --remove-section pack

或直接編輯設定檔,這個檔在git 的根目錄上。

$ vi .gitconfig

 

經過幾次嘗試,我發現這個錯誤總是發生在接收大小約為1G的時候出錯,於是我想錯誤的原因會不會是出現在 gitlab 身上而不是我的伺服器本身?

其實這個問題以前也有出現過一次,那時急於下載駝鳥的解決方法就是改用 ssh,只是他很麻煩得上傳公鑰。這次想真正的解決問題。

於是開始搜尋有關 gitlab 1G的限制設定問題,就找到官網有一個表格[5]:

裡面有一個參數 Maximum site size 1 GB ,而且下面還有加註 The maximum size of your Pages site depends on the maximum artifact size, which is part of GitLab CI/CD.

似乎這就是我的目標:要修改這個參數,網路上沒有找到修改的方法,只能看官網的說明去修改這個參數上 Artifacts maximum size (compressed)

調整了全域和專案中的 Artifacts maximum size 都改成30G結果還是一樣,在下載到 1G 時就斷線。

這其間還研究了 GITLAB本身看有沒有隱藏的設定,無果。

經過我多次嘗式,後來我在

Admin Area-> Settings -> CI/CD -> Package file size limits

中找到下面欄位,把他改成約3G大小,再重試

Maximum Terraform Module package file size in bytes

Generic package file size in bytes

<沒有填,但是不確定是不是本來就沒有還是不小心刪了?>

本來想說填個3g看會不在3g的地方停止,沒想到重試竟然就成功了:

remote: Enumerating objects: 89044, done.
remote: Counting objects: 100% (632/632), done.
remote: Compressing objects: 100% (631/631), done.
remote: Total 89044 (delta 3), reused 609 (delta 1), pack-reused 88412
Receiving objects: 100% (89044/89044), 10.83 GiB | 10.65 MiB/s, done.
Resolving deltas: 100% (26302/26302), done.
From http://example/yourname/project
 * branch                HEAD       -> FETCH_HEAD
Updating files: 100% (64660/64660), done.

我的確不能理解為什麼設成3 G竟然能傳超過3G的大小?

可能和上面的Artifacts maximum size 也有關係,這次就懶得做實驗了。

ps:網頁上修改 gitlab 參數不必重啟 gitlab。

 

參考資料

[1] https://blog.csdn.net/yihuajack/article/details/103650588

[2] https://stackoverflow.com/questions/48200429/not-able-to-clone-large-repo-code-on-git

[3] https://stackoverflow.com/questions/26286155/pull-large-repository-more-than-1gb-size-over-http-fail

[4] https://confluence.atlassian.com/bitbucketserverkb/git-clone-fails-fatal-the-remote-end-hung-up-unexpectedly-fatal-early-eof-fatal-index-pack-failed-779171803.html

[5] https://docs.gitlab.com/ee/user/gitlab_com/

 

 

END

你可能感興趣的文章

台灣2019節慶國定假日 ics下載 找不到2019的假日檔,沒關係,我自己做一個

WD硬碟的效能評比 想買WD的硬碟,要怎麼選?

銅網路線路UTP測試名詞解釋 一條銅網路線的品質好不好得經過測試,測試也是有學問的

使用Wayback machine來查看以前的網站 你以前的網站長什麼樣子,想必你一定記得,但是越來越模糊,還好有人幫你把他記錄下來

[EXCEL] 直接把表格變成圖片 要把表格變成圖片不用抓圖,只要簡單的幾步

慘!桌機被綁架了?可怕的CryptoL0cker 這可不是什麼有良心的好軟體,幫你把檔案加密存放,而是把你的檔案加密,讓你不能使用,如果要使用,請付出相當於台票13000的代價解密

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

[MAC] 截取螢幕畫面的方法 截取螢幕畫面的方法,在MAC中叫作螢幕快照,英文是screenshot

NETCRAFT發現你的網站及作業系統 NETCRAFT可以發現你的網站及作業系統

設計的工作絕不接受比價 拿買陽春麵的價格想買牛肉麵,寧願倒掉也不賣

[CodeIgniter 3] 資料庫的使用方法整理2/2 CI3 承襲 CI2,有很多的builder class可以用,依各人的使用習慣,有人喜歡一堆sql字串,有人喜歡用helper