我正在尝试构建一个测试设置来测试我的服务器在高负载下的性能。为了做到这一点,我想打开数千个 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 魔法,它们每秒能够服务数百万个请求。请记住,这是一种过于简单的解释,它省略了许多细节和步骤,但有点解释了如何同时与一个端口建立多个连接。