我有一個簡單的TCP服務器託管在64位Windows Server 2008 R2上。 TCP服務器只接收連接並用收到的消息(回聲)答覆傳入數據。有大約600-700個客戶嘗試連接併發送一些信息。問題是:當數據從客戶端發送到服務器時,服務器會丟失幾乎所有的連接(大約90%)(前15-20個連接已經正常執行)。我用Whireshark嗅探了TCP的流量。 從服務器端日誌:數據發送時連接丟失。服務器在握手後收到RST,ACK
+--------------+--------------+--------------------------------+
| Source | Destination | Info |
+--------------+--------------+--------------------------------+
| 1. client ip | server ip | [SYN] **Handshake step1** |
| 2. server ip | client ip | [SYN, ACK] **Handshake step2** |
| 3. client ip | server ip | [ACK] **Handshake step3** |
| 4. client ip | server ip | [RST, ACK] **Loses connection**|
+--------------+--------------+--------------------------------+
從客戶端日誌:
+--------------+--------------+--------------------------------+
| Source | Destination | Info |
+--------------+--------------+--------------------------------+
| 1. client ip | server ip | [SYN] **Handshake step1** |
| 2. server ip | client ip | [SYN, ACK] **Handshake step2** |
| 3. client ip | server ip | [ACK] **Handshake step3** |
| 4. client ip | server ip | [PSH, ACK] Message |
| 5. client ip | server ip | [PSH, ACK] CRLF message |
| 6. server ip | client ip | [RST, ACK] **Loses connection**|
+--------------+--------------+--------------------------------+
在這兩種情況下,«復位原因»是:\ 000 \ 000 \ 000 ...... \ 000 當我們從本地網絡連接時,連接沒有丟失。
1.服務器網絡容量1Gbit/s。其他應用程序不會丟失包。消息大小約100-150字節(shor消息)。 2.連接立即失敗。 3.只有Windows防火牆,但我禁用它。 – zenio
現在它似乎因某些限制而下降。當你說90%下降時,這些連接是否會在很短的時間內進入?你有沒有嘗試等待一段時間,看看它是否會成功?另一個問題是,對於成功的案例,您是否在服務器響應後關閉連接? –
是的,我試圖等待一段時間 - 結果是一樣的。服務器響應後,我不關閉連接,應該打開連接以進行消息交換。 – zenio