最前面放的 haproxy ,后面是各种 TCP server 。包括接入服务器,其他逻辑服务器。HTTP 有很多压测工具,ab/wrk 等。但是 TCP Server 一般都是自己写个简易客户端,在一台电脑上启动大量的客户端来压测,效果一般,并且客户端进程开多了,本身容易把测试机资源打满了。
1
zx900930 127 天前
jmeter tcp sampler
测试机资源打满了是测试机的问题,该加资源就得加资源 |
2
coderxy 127 天前
jmter locust ?
|
3
XSDo 127 天前
游戏很多请求是有逻辑的 没有 http 接口测试那么简单,优化下自己写的压测客户端 一般没有啥问题,最多开多机台机器去压测
|
4
htxy1985 127 天前
当年我们草台班子就是自己写的简易客户端,可以深入到具体的业务逻辑中,模拟真人行为。下班后用大家的机器,一个机器开 N 个进程进行模拟测试。单个测试机,感觉再大的资源也是有限的,另外资源也有限,申请不下来那么好的测试机。
|
5
ugpu 127 天前
不是写机器人压测吗? 这还能有专业工具?
|
6
Jinnrry 127 天前 via Android 2
直接公测,让玩家帮忙测试
|
7
MoYi123 127 天前
只能专门写个游戏 bot 吧.
|
8
guyeu 127 天前
都有服务端了,那肯定是有客户端的,在已有客户端的基础上封装一套 bot 来跑压测并不复杂。
我比较想知道 TCP 的话就不是 request-reply 那种消息模型了吧,传统的响应延时这种指标就不太好使了,你们用哪些指标来评估服务器的性能表现呢? |
9
shuax 127 天前
自己单独写个 TCP Client 压测,我一般用 python asyncio 写写。
|
10
goforwardv2 OP @XSDo 是的 想模拟几十万级别的 TCP 连接,估计只能用多台机器了
|
11
goforwardv2 OP 本质上是模拟几十万级别左右的 TCP 高并发,而且每个 TCP 连接都有自己的消息交互逻辑,并不是简单的 ping-pong ,看了大家的回复,只能是找多台机器一直开简易客户端了(就是机器人了)。比较好奇的是,大家平时压测的机器,比如 8 核 16G 的大概最多同时开多少个机器人
|
12
qishua 127 天前
用云厂商的 pts 压测,按量的,实现你的并发压测需求,最多也就花个几十块钱
|
13
shuax 127 天前 1
几十万的目标订得太大了吧,说点难听的,在线几十万的游戏,不会来问这个问题。
|
14
goforwardv2 OP @shuax 肯定没有这么多,就是自己模拟下这么大的并发下,会有哪些问题,也想学习下
|
15
Dream95 127 天前
jmeter 太老了,线程模型一直没有更新。阿里云有个 PTS 服务可以研究下
|
16
chensuixiang 127 天前
以前我是手写的,现在我推荐 k6 。强大且灵活,特别适合开发人员。
|
17
mightybruce 127 天前
locust + boomer 值得拥有,写一点相关代码可以对各种类型协议做分布式压测
locust master 只负责数据的收集和消息的广播等操作 bommer 是具体的发压机器 |
18
future0906 127 天前
游戏服务器不是纯协议的,都是有系列逻辑的,通用工具基本没用。如果是服务器程序自己写用例的,可以直接用服务器作为机器人载体,再利用服务器的部署能力去做集群压测。顺便指标啥的也可以走服务器的收集工具。
如果没有的话,建议 k8s+压测脚本。 |
19
shiyuu 127 天前
|
20
redbule 127 天前
自己写 bot 压测
|
21
goforwardv2 OP @future0906 是的 之前都是写一个客户端机器人,然后脚本批量启动,但需要好几台机器才能模拟 10 万级别的并发,因为批量启动客户端也很占用资源,开的太多,效果反而不好,只能多台,一台开 1 万
|
22
goforwardv2 OP @mightybruce 嗯 我看下
|
23
goforwardv2 OP 现在的方式都是堆机器模拟客户端压测,本来想着看有没有 ab/wrk 这种,找一个性能可以的机器就可以了,通过大家的回复来看,可能还是客户端 bot 更符合场景,有做过相关的大佬,也可以说下自己的场景
|
24
htxy1985 127 天前
我们之前是一台普通开发机器模拟 1000-2000 ,找十台机器压到 2W 同时在线,这也是当时我们的单服承载理论上限。
开测压出很多问题来,这个测试很有必要。 |
25
tool2dx 127 天前
windows 开不到那么大,也就几千 TCP 。
用 linux 单机上万连接完全没问题的,就是你需要把游戏协议移植到 linux 上运行。 |
26
goforwardv2 OP @tool2dx 嗯 windows 和 linux 都试过,反正想模拟几万的带具体逻辑的高并发,就是要堆机器
|
27
goforwardv2 OP @htxy1985 非常具有参考价值,单台 linux 的如果只是 ping-pong ,5 万都可以,但加上游戏的具体逻辑,2 万很不错了
|
28
future0906 127 天前
|
29
fatigue 127 天前
看你想测啥,测逻辑就服务端机器人,测网络登录交互这些就录包发包就行了,没听说过堆机器开客户端的。要针对性测试
|
30
nightwitch 127 天前
除了卡牌游戏没见过游戏服务端能承载十万人的...
看瓦罗兰特分享的数据,一个服务器跑 100+个 Instance ,性能就开始稳不住了(一个 Instance 也就 5v5 对局,10 个玩家) https://technology.riotgames.com/news/valorants-128-tick-servers |
31
cabing 127 天前
用 go 写个。超级简单啊~
|
32
nevermoreluo 124 天前
1. 我可能遇到的水平不高都是 client 端写的,服务端要出文档,到时候联运方(或者叫推广方)压测也是拿文档和机器人他们自己写了测的。
2. 刚开始不要想单组架构十万吧,都是自动扩展堆机器的。哪怕是手动扩展的方案也是方案,华夏滚服的概念又不是不能用,赚钱不寒碜。自动扩展也不用都做到,网关这种手动开了,能通过 haproxy (不过你这个 haproxy 如果是单台也是个单点故障)动态调整就好了,主要是游戏逻辑服角色服场景(关卡)服之类的需要自动扩展,个人感觉单台承受 3~5k 活跃其实就差不多了。 3. 单组服务要吃几十万,我感觉找个大哥从头到脚优化完游戏都凉了。沉淀一套自动扩展和应急补偿方案才是主要的。真要到需要压缩单组几十万的时候,先优化消息大小才是关键,带宽比机器贵都是钱,先扩容再花钱招大哥优化。不过我觉得到时候联运啊什么的会上门谈条件给方案的。 |