none
請問一個 Windows Server Port 佔用或無法連線的詭異問題... RRS feed

  • 問題

  • 大家好, 

    我們公司的 Windows Server 近期遇到一個問題, 就是在該 Server 上我們安裝了一個 Application, 它會用到 2809 的 Port, 但遇到該 Port 常會連不上。我們有用 Telnet 測試, 大概每 Telnet 5 次就會有 1 次連不上。為了排除網路的問題, 我們直接在該 Server 上,下 telnet 127.0.0.1 2809 的指令。

    請問大家是否有遇到類似的問題,假設不是該 Application 的問題,有什麼可以調查的方向可以供參考?

    謝謝
    2019年3月16日 上午 02:36

解答

  • 你有用 netstat -a -b 或 TcpView (微軟網站下載) 看過是甚麼程式占用 2809 嗎?

    如果沒有其他程式搶 port ,純粹是該程式獨佔,從開發者角度來看,可能是該程式處理 Listen 到 Accept 沒處理好。

    可以從 TcpView 觀看,如果有多連線關閉的沒終止,Application 也需要加強斷線後關閉物件的偵測頻率。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 Amos CC Liu 2019年5月8日 上午 06:00
    2019年3月16日 上午 09:20

所有回覆

  • 你有用 netstat -a -b 或 TcpView (微軟網站下載) 看過是甚麼程式占用 2809 嗎?

    如果沒有其他程式搶 port ,純粹是該程式獨佔,從開發者角度來看,可能是該程式處理 Listen 到 Accept 沒處理好。

    可以從 TcpView 觀看,如果有多連線關閉的沒終止,Application 也需要加強斷線後關閉物件的偵測頻率。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 Amos CC Liu 2019年5月8日 上午 06:00
    2019年3月16日 上午 09:20
  • 您好,謝謝您的建議

    因為該Server在營運環境,我們下週會安排相關測試與檢視

    我們計劃寫一個下面的批次程式收一下資料,看是否有除了我們安裝的應用程式外,還有其他非預期的程式有在搶 2809

    ==============================
    :loop
    netstat -ano | find “2809” >> log.txt
    timeout /t 5
    goto loop
    ===============================

    若有其他建議,也歡迎讓我們知道,大感激

    2019年3月16日 上午 11:20
  • TcpView 免安裝,拷貝進去就能跑。

    https://docs.microsoft.com/en-us/sysinternals/downloads/tcpview


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年3月16日 下午 01:46
  • 大感激,下週我們也會用 TcpView 來檢視一下,再次感謝您詳細的資料提供
    2019年3月16日 下午 01:59
  • 我們進一步檢查手邊的環境,發現同樣的配置在另外兩台 Windows Server 2008 R2 Standard 就沒問題,

    但發生問題的兩台剛好是安裝在 Window Server 2008 R2 Enterprise,

    然後爬了一下網站,發現 Server 2008 還蠻多類似的問題,

    不知道大家是否有遇過類似問題的,是不是也剛好是在 R2 Enterprise 版?


    2019年3月19日 上午 03:01
  • 1.建議用兩個環境(Client)測試===>釐清楚是前端與網路問題。

    2.建議telnet 127.0.0.1 2809改成 telnet <<主機IP>> 2809

    3.換一張網路卡

    4.檢查服務的相關程式。

    希望對你有幫助。

    2019年3月19日 上午 03:43
  • Hi Jacky,

    問題的一開始發生在Client端,因為連不上Server Port 2809,才會開始找問題點,是網路還是Server本身問題。

    為了排除是網路繞送的問題,所以才會使用在Server本機使用 Telnet 127.0.0.1 2809進行測試。

    請問『2.建議telnet 127.0.0.1 2809改成 telnet <<主機IP>> 2809』的主要考量是?

    ps1. 我們用 telnet 127.0.0.1 2809測試,每 5 次大約會有 1 次會失敗

    ps2. 也有用 netstat -ano | find “2809” 確認過該 Port 有正常 Listening


    2019年3月19日 上午 05:46
  • 建議參考心冷的說明,使用 TCPVIEW 觀察 Port 的佔用狀況,
    如果 Port 及程式都確認有佔用,
    但用戶端就是沒有辦法進行溝通,
    可能就要朝程式端著手研究起,
    如果程式不是你們開發的,建議將狀況回報給開發廠商瞭解

    蘇老碎碎念
    資訊無涯,回頭已不見岸
    Facebook - 微軟台灣官方論壇愛好者俱樂部

    論壇不是神壇,沒人會通靈知道問題狀況
    請正確簡述標題及詳述狀況
    如何在論壇正確發問,可以參考iThome的文章:
    如何問到我要的答案

    2019年3月19日 上午 07:36
    版主
  • Hi 蘇老/心冷,

    謝謝兩位的建議,我們今天透過 TCPView 觀察 Port 的佔用狀況,有發現營運的 Server 有大量的 CLOSE_WAIT 連線

    因為營運環境是 Client 透過 F5 連線到 Windows Server 2008 R2 Enterprise

    也去查了其他文章,有提到『Close_Wait會佔用一個連接,網絡可用連接小。數量過多,可能會引起網絡性能下降,並佔用系統非換頁內存。』

    但詭異的事同樣的配置,在測試環境,卻沒這問題。唯一的差異是,測試環境安裝的是 Windows Server 2008 R2 Standard。

    想請問大量的 CLOSE_WAIT 連線會影響到,這題一開始提到的 Telnet 127.0.0.1 2809 不上的問題嗎?還是這是兩個獨立的問題?

    另外,CLOSE_WAIT 有可能是 Window Server 2008 本身的問題嗎?因為也看到其他文章有提到類似的討論,但我們也已經將營運的 2008 Enterprise 已經升級到 SP1 了。

    以上再請大神們協助給一些建議~

    2019年3月28日 上午 06:33
  • CLOSE_WAIT 可能是 client 端關閉連線,Server 端尚未關閉,包含未正常交談,例如 telnet 方式用來測試 ok ,但大量測試可能導致 server 端在等這個 telnet 進行後續交談。

    可以請該軟體公司增加定時掃描連線逾時與失效連線,主動關閉 socket 。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2019年3月28日 上午 11:42
  • 謝謝心冷的建議,最後透過TcpWait發現有異常closeWait,經測試後發現是F5導致 大感激
    2019年5月8日 上午 06:02