有什么工具可以模拟大量 tcp 连接吗?

2022-11-22 11:01:52 +08:00
 huangya
就是有个 client 和 server ,client 主动向 server 发起大量连接。要求是能跑完 3 次握手,握手之后的数据流可跑或不跑。但是不能结束连接。相当于压力测试。linux 和 windows 都行,有 linux 下面的免费工具更好。

补充一下:client 和 server 之间有个路由器,我的目的是测试路由器能支持多少个连接。所以 client 和 server 都需要。
4758 次点击
所在节点    宽带症候群
21 条回复
lzj724
2022-11-22 11:02:48 +08:00
jmeter
vhysug01
2022-11-22 11:27:24 +08:00
用 go 写过一个,直接起 1w 个 goroutine ,简单无脑
ttvast
2022-11-22 11:40:36 +08:00
import socket
v=[]
for i in range(10000):
s=socket.socket()
s.connect(("192.168.1.1",80))
v.append(s)

input("Press any key to exit")

server 端也不难,谁有空补上吧。
huangya
2022-11-22 11:51:48 +08:00
@vhysug01 没深入了解 go ,不知道直接起 1w 个 goroutine ,对测试机要求高不高,怕把电脑搞死
huangya
2022-11-22 11:55:55 +08:00
@lzj724 我主贴补充了测试目的。下载了 jmeter ,这玩意感觉有点杀鸡用牛刀的感觉。我在看这玩意怎么用。
ALXG
2022-11-22 12:07:17 +08:00
一个进程能搞多少连接? 一个操作系统能容纳几个这种进程? 一个物理机能带几个操作系统? 要几个物理机才能满足你的需要?
changnet
2022-11-22 12:58:43 +08:00
像楼上的,用自己熟悉的语言随便 for 循环一下即可。比如 c 的话直接异步,都不用处理异常。1W 个连接不跑逻辑随便一颗 x86 cpu 都行,怎么会把电脑搞死,内存也用不了几 M

另外路由器没有多少个连接的概念的吧。路由器只管收数据包,然后根据包地址转发,只要收到的包数量能处理得过来路由器就没问题。不是每个 tcp 连接在路由器那里都有一个连接
cdlnls
2022-11-22 13:08:37 +08:00
我之前写了一个,有兴趣可以看看 https://github.com/ttgml/c1k
当时制作的时候目的也是为了模拟大量 TCP 连接

利用 libpacp 抓包发包实现的,配置需求很低,1c1g 的虚拟机就能模拟出上百万的 TCP 连接,只要心跳时间够长,理论上应该是可以模拟出千万级别的连接。

本身不是做开发的,写这个项目也是做着玩的,所以代码写得很 low
jousca
2022-11-22 13:13:32 +08:00
楼上这个有意思。
jousca
2022-11-22 13:14:35 +08:00
想测试路由器 NAT 能力? 只有 NAT 才存在这个并发连接数问题。否则对于路由器来说只有包转发效率问题。
cdlnls
2022-11-22 13:14:35 +08:00
这里推荐百度开源的一个项目: https://github.com/baidu/dperf
原理也应该差不太多,基于 DPDK 实现的,没用用过,需要硬件支持才行
huangya
2022-11-22 13:39:33 +08:00
@changnet
@jousca
准确来说是家用路由器的 nat 转发能力。
jiangzm
2022-11-22 14:55:14 +08:00
路由设备应该有支持的并发连接数吧, 而且会给出理论上能同时负载的客户端数(最大并发连接数 /终端日常连接数),不过家庭带宽本身也限制了账号的最大连接数。
jiangzm
2022-11-22 14:57:22 +08:00
jiangzm
2022-11-22 15:01:34 +08:00
忽略上面链接,是测试 DNS 的非并发连接数
dingwen07
2022-11-22 15:07:25 +08:00
@changnet #7 路由器 NAT 是要保存映射的
WangRicky
2022-11-22 15:36:12 +08:00
gatling
9544
2022-11-22 15:44:34 +08:00
在内网服务器开几个网心云服务跑几天,实测晚上一台设备的连接数都能上 1w 。
jousca
2022-11-22 16:36:42 +08:00
13 楼说得对,其实家宽本身限制连接数的,很多运营商都这么干的。超过之后不允许新增连接数。你路由器再强也不行。

除非你用专线(政企宽带)
artnowben
2022-11-23 17:30:36 +08:00
@cdlnls 我是 dperf 作者,非常谢谢推荐

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/897016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX