大版本与开服前的压测回答一个问题:这套系统能扛多少同时在线。压测方案从单接口的基准测试起步,到全链路的场景演练收尾——单点合格不等于链路合格,真实玩家的行为才是最终的考题。
---接口基准:并发下的延迟分位
setontimerex(64, 1)
function Stress.bench(iface, concurrency)
local lat = {}
for i = 1, 200 do
local t0 = os.clock()
Stress.call(iface, i % concurrency + 1)
lat[#lat + 1] = (os.clock() - t0) * 1000
end
table.sort(lat)
Ops.log(("%s P50 %.1fms P99 %.1fms"):format(
iface, lat[100], lat[198]))
end
单接口基准以固定并发打 200 次采样,P50 与 P99 的延迟分位是接口的健康证:登录接口 P99 超过 150 毫秒、背包查询 P99 超过 30 毫秒即为不达标,达标线来自性能基线而不是拍脑袋。基准的并发阶梯爬升:50、100、200 三档,拐点在哪一档出现就是该接口的实际容量。
---全链路场景:开服首小时的模拟
function Stress.openDay()
local bot = BotPool.borrow(5000)
-- 阶段一:5000 机器人同时登录
BotPool.login(bot)
-- 阶段二:七成挂机练级三成跑图
BotPool.behave(bot, { idle = 0.7, roam = 0.3 })
-- 阶段三:整点 BOSS 集结,祖玛教主千人同屏
BotPool.rushBoss(bot, "祖玛教主", 0.6)
end
全链路按真实场景编排:开服首小时的模拟让 5000 个机器人同时登录,然后按行为权重分流——七成挂机练级、三成跑图,整点触发祖玛教主的千人集结,把服务器的最痛时刻提前演一遍。机器人走真实协议,压测的链路与生产一致;行为分布来自线上埋点的统计,真实玩家的画像决定机器人的分配。压测的报告三件套:各档在线数的延迟曲线、资源水位曲线、首现错误的触发条件,容量结论从曲线读出而不是从感觉猜出。
压测环境与生产的数据隔离校验,压测流量打穿到生产是最高级事故;压测的结论与上次的开服实测对照,预测偏差超 20% 复查模型。
压测机器人曾经直连数据库绕过网关,网关的瓶颈没测出来,开服时网关先倒,机器人改走真实协议。压测的数据曾经混进生产库,玩家的排行榜里出现了机器人大军,环境隔离加双确认。行为分布曾经按设计文档配,真实玩家集中国庆活动的程度远超预设,压测场景每年用最新的线上画像重配。
压测排期固定在大版本合并后的 48 小时内,问题在窗口内修复复测。压测的通过线写进发布标准:目标在线数下 P99 延迟与错误率双达标。压测报告归档进容量规划的知识库,系数的校准靠一次次实测喂养。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 盟重矿洞挖出的黑曜石除了堆仓库没有去向,矿工玩法缺一条消耗链。黑市商人每 4 小时换一批限时货架,6 个…
实战应用:用在哪里 盟重码头到沙巴克水路要 20 分钟,商船运货收益高但会被半兽海盗打劫,单人押船九死一生。码头护航做成对抗…
实战应用:用在哪里 拍卖行竞拍高峰,一件屠龙刀 1 秒能产生 60 条竞价事件,逐条 sendluamsg 下发,竞拍面板每…
实战应用:用在哪里 金盒转盘 8 格奖池,普通奖越来越疲,大奖既要概率递增又不能失控。动态权重轮盘:每抽一次普通奖权重缩减 …
实战应用:用在哪里 周年庆礼包开领 30 分钟,3000 名玩家多领了一份礼盒,回收与舆情处理耗掉两天。事故根因简单得刺眼:…
实战应用:用在哪里 一次回档让玩家的裁决之杖从强化 7 退回 5,口头承诺补偿却没有账可查。强化流水把每次强化的时间、道具、…