簡體   English   中英

git-daemon:“無法在主機(null)端口9418上分配任何偵聽套接字”

[英]git-daemon: “unable to allocate any listen sockets on host (null) port 9418”

在Debian擠壓時,我收到syslog錯誤:

unable to allocate any listen sockets on host (null) port 9418

我也無法遠程克隆。

文件/etc/service/git-daemon/run

"$(git --exec-path)"/git-daemon --verbose --base-path=/var/cache/git --detach --syslog --reuseaddr --export-all

netstat -l | grep git netstat -l | grep git輸出:

tcp        0      0 *:git                   *:*                     LISTEN     
tcp6       0      0 [::]:git                [::]:*                  LISTEN

我目前正在使用sv start/stop命令行重新啟動服務,並終止服務進程以確保重新加載。

也許我錯過了一些非常愚蠢的東西。 任何幫助深表感謝。

這種問題是一個很好的回應,提醒自己git daemon帶有選項:

--init-timeout=<n>

建立連接的時刻與收到客戶端請求之間的超時(以秒為單位)(通常是一個相當低的值,因為它應該基本上是立即的)。

--timeout=<n>

特定客戶端子請求的超時(以秒為單位)。
這包括服務器處理子請求所花費的時間以及等待下一個客戶端請求所花費的時間。

這樣可以確保為可能不在那里的客戶分配套接字,而不是保留它。

git 2.9.x +(2016年第3季度)將更快地發現這些案件:

請參閱Eric Wong( ele828 提交a43b68a (2016年5月25日
(由Junio C gitster合並- gitster - in commit a43b68a ,2016年5月25日)

daemon :為所有套接字啟用SO_KEEPALIVE

當“ git daemon ”在沒有指定--[init-]timeout情況下運行--[init-]timeout來自靜默脫機的客戶端的連接可能會長時間 --[init-]timeout ,浪費資源
已啟用套接字級KEEPALIVE以允許操作系統注意到此類連接失敗。

雖然存在--init-timeout--timeout選項,並且我從未運行過它們的git daemon ,但是一些用戶可能忘記設置它們並在連接失敗時遇到掛起的守護程序進程。

啟用套接字級超時,以便內核可以根據需要發送keepalive探測以檢測失敗的連接。

我想,當你使用git-daemon --listen參數時,它不會抱怨缺少host ...

與git守護進程設置相比,這可以更容易:

  • 對於公共存儲庫,將其放到github
  • 對於私有存儲庫,設置sshd / ssh可以很容易。

問題也發生在我的服務器上。

從git://中克隆時,我使用兩種方法無效。

1,git over ssh,將用戶的公鑰附加到〜/ .ssh / authorized_keys,然后訪問存儲庫不需要用戶名/密碼:

git clone user@host:/path/to/git/repository/myproject.git

2,將存儲庫放在webserver的可訪問目錄下,例如

/var/www/git

確保/ var / www /是可訪問的,例如它設置為apache httpd的doc root。 這讓用戶至少可以獲得它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM