Tcp
如何在主機上人為打開多個tcp連接(測試)?
我正在嘗試建構一個測試設置來測試我的伺服器在高負載下的性能。為了做到這一點,我想打開數千個 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 魔法,它們能夠每秒處理數百萬個請求。請記住,這是一個過於簡單的解釋,它遺漏了許多細節和步驟,但有點解釋了似乎一次可以有多個連接到一個埠。