2010-03-08 54 views
1

愚蠢的問題。我從一個連接到服務器的客戶端獲得這些信息。令人遺憾的是,這種設置很複雜,使得調試變得複雜 - 而且我們沒有足夠的選項。TCP:地址已在使用異常 - 客戶端端口可能的原因?無端口耗盡

環境: *客戶機/服務器系統,都運行在同一臺機器上。客戶端實際上是一個在特定時間進行數據庫操作的服務。 * cnonection來自C#,通過OleDb到一個EasySoft JDBC驅動程序到一個自定義的書面JDBC服務器,然後託管C++中的邏輯。是的,但是第三方供應商決定通過JDBC接口公開其服務器的擴展機制。在這裏沒有太多可以完成;)

症狀: 在(ir)定期的間隔,我們得到了JDBC驅動程序告訴的「Address already in use:connect」。他們似乎來自我們運行的一項特定服務。

現在,我讀了所有關於端口耗盡的內容。這就是爲什麼我們現在運行一個小工具,每分鐘計算一次端口及其狀態。上次發生這種情況時,我們使用了令人驚訝的370個端口,在錯誤發生後計數上升到約900。我們已經修補了註冊表(這是一臺Windows機器),以允許超過5000個客戶端端口的標準,但即使如此,我們還遠遠沒有開始的限制。

這就是爲什麼我在這裏問。 Ayneone是否可以導致這種情況?

這是一臺Windows 2003 Server計算機,64位。我唯一能看到的其他事情可能會導致它(但該功能被認爲是禁用的)是安裝在服務器上的Symantec Endpoint Protection - 並且能夠充當防火牆,它可能會攔截網絡流量。我不想通過過早地指向賽門鐵克來打開一罐蠕蟲(如果指向賽門鐵克可以被視爲這樣)。那麼,任何人都有一個想法還有什麼可能是原因?

感謝

回答

1

「地址已在使用」,又名WSAEADDRINUSE(10048),是指當準備連接到服務器套接字的客戶端套接字,它首先試圖把自己綁定到特定的本地IP /端口對已由另一個套接字使用,該套接字既可以是活動的,也可以是已關閉但仍處於FD_WAIT狀態的套接字。這與可用端口的數量無關。

+0

...這是客戶應該很少做的事情。沒有優勢和幾個缺點,包括這一個。 – EJP 2010-03-08 07:58:00

+0

這是不對的。客戶端工作正常,並使用隨機端口 - 這可以看出(除非我們在這裏一週內出現一次愚蠢的錯誤)。在我們的測試環境中的負載測試可以正常工作20倍的負載。 錯誤也與端口耗盡有關。檢查例如https://www.socketlabs.com/support/index.php?_m =知識庫&_a = viewarticle&kbarticleid = 23 或 http://forums.parasoft.com/index.php?showtopic=435 而這正是我們不碰上根據我們自己的日誌程序傾銷所有套接字狀態每分鐘。 – TomTom 2010-03-08 09:08:45

-1

我在連接到SQL Server 7.0的.Net應用程序的Windows 2000 Server上遇到同樣的問題。有10臺服務器具有相同的配置,只有一臺服務器每天多次顯示此錯誤。通過一個小型的測試程序,我可以通過在SQL Server偵聽端口上建立一個TCP連接來重現錯誤。運行CurrPorts(http://www.nirsoft.net/utils/cports.html)顯示1024-5000範圍內仍有大量可用端口。

我出於想法,並想知道自從您發佈您的問題後您是否找到解決方案。

編輯:我終於找到了解決方案:服務器上存在一個蠕蟲(WORM_DOWNAD.A),用盡了本地端口而沒有被發現。

相關問題