Tcp

如何在主機上人為打開多個tcp連接(測試)?

  • March 20, 2015

我正在嘗試建構一個測試設置來測試我的伺服器在高負載下的性能。為了做到這一點,我想打開數千個 tcp 連接。問題是我只有兩台主機,一台用於伺服器,另一台用於負載生成器。

有沒有辦法做到這一點?

好的,它將佔用兩個文件。

第一個文件是您將在伺服器上執行的小腳本,它只是使用 netcat 打開大量監聽埠

第二個文件是您將在客戶端上執行的小腳本。確保更改serverIP為伺服器的實際 IP。

現在請記住,這是我非常快速地組合起來的東西。埠列表並不完美,您應該以 root 身份執行這兩個埠,因為某些埠是保留的,少數將被使用,但大多數將是有效的。我在我的系統上執行了它,並且 2000 中的大約 20 個已經在使用中。所以你可以調整,但你明白了。您還可以通過增加埠數量甚至讀取和寫入數據來增加負載,但這似乎是您想要的。

第一個名為 runoserver 的文件

#!/bin/bash
for port in `seq 50000 52000`;
       do
               netcat -l $port &
       done

第二個文件名為 runonclient

#!/bin/bash
for port in `seq 50000 52000`;
       do
               netcat serverIP $port &
       done

編輯-回复您的評論問題

同一埠不能同時打開多個連接。如果您正在考慮每個人在埠上訪問 Web 伺服器的方式,80那麼那裡有一點魔力。您可以通過訪問 google 並打開與埠 80 的連接來訪問 Google 的網頁。Google 基本上回應說:

I'm Google-
This was a valid request-
Continue all communication on port X- 
Then your computer and Google's server opens port X for reading and writing.

Port X would be a non-reserved, not in use, high numbered port. ex: 25643

因此,您連接到埠 80 的時間不會超過一秒鐘,通過負載平衡和其他 TCP/IP 魔法,它們能夠每秒處理數百萬個請求。請記住,這是一個過於簡單的解釋,它遺漏了許多細節和步驟,但有點解釋了似乎一次可以有多個連接到一個埠。

引用自:https://unix.stackexchange.com/questions/191118