2009-06-17 301 views
0

我們在我們的Web和SQL服務器(啓用了IPv6的Win 2008 SP1)上看到TCP/IP警告和相當多的連接失敗,並且在工作進程/ SQL服務器進程已連續運行數天。我想知道是什麼導致這些警告?允許的TCP連接的默認數量是多少,我們如何才能使這種情況發生變化?TCP/IP無法建立傳出連接

TCP/IP未能建立傳出 連接,因爲選定的本地 終點最近使用 連接到相同的遠程端點。此 錯誤通常發生在傳出 連接打開和關閉時的高速率,導致所有可用的本地 端口被使用並強制TCP/IP到 重複使用本地端口的傳出 連接。爲了最小化數據損壞的風險,TCP/IP標準 要求在從給定本地端點到給定 遠程端點的連續連接 之間經過最短時間段到 。

回答

2

這聽起來有點像你的連接開始失敗,然後自動重試。如果重試速度足夠快,TCP可以循環遍歷整個端口範圍,並且所有的端口都將處於TIME-WAIT狀態(IIRC,這是該州所稱的,這是因爲我已經詳細調試了TCP)。

一對夫婦的事情,瞭解第一:

  1. 是誰發起的連接(S)和什麼是他們應該被用來做什麼?
  2. 驗證連接失敗率,我傾向於使用Wireshark這種事情。

然後你必須尋找線索爲什麼連接失敗。可能是傳出連接到服務器,服務器是否正常運行?爲什麼服務器不接受連接 - 是負責接受連接死鎖,阻塞某事還是退出連接的進程/線程?始發者和服務器之間的網絡是否正常工作?

0

這是錯誤的TechNet page

+0

是的,我檢查發佈問題之前,該頁面對這種情況不是很有幫助。 – awsomelisp 2009-06-17 14:06:54

0

你使用類似

setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on) 

它可以讓你重複使用相同插座沒有兩次警告

+0

謝謝埃裏克。我不是自己打開任何tcp連接。 – awsomelisp 2009-06-17 14:18:43

0

這看起來對我來說,錯誤消息表明正是......你的端口被耗盡。這意味着很多傳出連接。

默認是不限制的TCP連接數(我想你只能通過端口數的限制,很可能端口1024到65534)

我就開始調查爲何您會看到這麼多在如此短的時間內傳出連接。

+0

所以我的問題是我們可以有多少傳出連接超過'x'時間段,並且這個數字是可配置的?如果是這樣,在哪裏以及如何? 我看到連接失敗的perf計數器太高(150000),並且建立的連接<50,這很混亂。我如何區分出站和入站連接? – awsomelisp 2009-06-17 14:17:57