記錄以備忘
原由, 公司專案的git伺服器, 幾周前突然變的慢了. 再進行git fetch, git pull, git push 等遠端操作時, 總要延遲10~15秒, 才有反饋.
今天偷點時間搞了一下.
首先了解一下, git資料傳輸協議 它一般是通過以下四種協議來和客戶端傳輸資料的.
1.本地協議
如果伺服器就是在同一硬碟上,一般用此協議, eg :
[git@192 irisloftserver]$ git remote -v
origin/home/git/repositories/projectname.git (fetch)
2 ssh協議
git 使用的傳輸協議中最常見的可能就是 ssh 了 eg:
raochontaosimac:rainday terrence$ git remote -v
origin
[email protected]:~/repositories/projectname.git (fetch)
3 git協議
這是乙個包含在 git 軟體包中的特殊守護程序;它會監聽乙個提供類似於 ssh 服務的特定埠(9418),而無需任何授權。打算支援 git 協議的倉庫,需要先建立 git-daemon-export-ok 檔案 — 它是協議程序提供倉庫服務的必要條件 — 但除此之外該服務沒有什麼安全措施。要麼所有人都能轉殖 git 倉庫,要麼誰也不能。這也意味著該協議通常不能用來進行推送。你可以允許推送操作;然而由於沒有授權機制,一旦允許該操作,網路上任何乙個知道專案 url 的人將都有推送許可權。不用說,這是十分罕見的情況。
這個協議我是沒用到過
4 http/s 協議
最後還有 http 協議。http 或 https 協議的優美之處在於架設的簡便性。基本上,只需要把 git 的裸倉庫檔案放在 http 的根目錄下,配置乙個特定的 post-update 掛鉤(hook)就可以搞定(git 掛鉤的細節見第 7 章)。此後,每個能訪問 git 倉庫所在伺服器上 web 服務的人都可以進行轉殖操作。下面的操作可以允許通過 http 對倉庫進行讀取:
eg:raochontaosimac:rainday terrence$ git remote -v
bitbucket
(fetch)
現在專案使用的就是ssh 協議. git 遠端操作的延遲其實也就是ssh登入的延遲, 更直接一點.
同樣也是10~15秒後能登入上伺服器
ssh -v [email protected]
可以看到這期間都在做什麼, 哪一塊消耗了時間
下面說下如何解決這樣的問題,最為常見的原因是因為server的sshd會去dns查詢訪問
client ip的hostname. 這會消耗大量的時間.
解決方法是更改sshd_cofnig的配置
1. 開啟檔案
sudo emacs /etc/ssh/sshd_config,
centos系統, 同一目錄還存在ssh_config, 注意一下檔名
2. 搜尋userdns, 設定為no
有些系統可能沒有這個選項, 沒有的話, 就增加一行
usends no
3.重啟sshd服務
service sshd restart
再進行git 遠端操作, 或ssh的登入操作. 速度就快多了
區域網伺服器git服務延遲處理
原由,公司專案的git伺服器,幾周前突然變的慢了.再進行git fetch,git pull,git push 等遠端操作時,總要延遲10 15秒,才有反饋.今天偷點時間搞了一下.首先了解一下,git資料傳輸協議 它一般是通過以下四種協議來和客戶端傳輸資料的.1.本地協議 如果伺服器就是在同一硬碟上...
區域網 git服務
1.建立新使用者專門來管理倉庫 useradd git 2.配置免秘鑰登入 authorized keys中新增公鑰 3.在git使用者中新建倉庫 要在新建的倉庫中更改.git config,新增以下的語句 git預設拒絕了push操作 receive denycurrentbranch ignor...
區域網伺服器架設
所謂的區域網 local area network,lan 用於將有限範圍內 例如乙個實驗室 一層辦公樓或者校園 的各種計算機 終端與外部裝置互聯成網。一般情況下 10人以下,規模比較小的公司一般對網路應用需求較低,由於人數少,基本也不存在劃分vlan 虛擬區域網 的需求,所以,選擇乙個多口的交換機...