大版本与开服前的压测回答一个问题:这套系统能扛多少同时在线。压测方案从单接口的基准测试起步,到全链路的场景演练收尾——单点合格不等于链路合格,真实玩家的行为才是最终的考题。
---接口基准:并发下的延迟分位
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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…