如何在主机上人为地打开多个tcp连接(测试)?

如何在主机上人为地打开多个tcp连接(测试)?

我正在尝试构建一个测试设置来测试我的服务器在高负载下的性能。为了做到这一点,我想打开数千个 TCP 连接。问题是我只有两台主机,一台用于服务器,另一台用于负载生成器。

有没有办法做到这一点?

答案1

好的,这将需要两个文件。

第一个文件是一个小脚本,您将在服务器上运行,它只是使用 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 魔法,它们每秒能够服务数百万个请求。请记住,这是一种过于简单的解释,它省略了许多细节和步骤,但有点解释了如何同时与一个端口建立多个连接。

相关内容