"今天服务器稳不稳"不该靠玩家反馈才知道。性能日报把三组核心指标(帧率/内存、错误数、在线与负载)按天自动汇总成一份报告,推送到 GM 群或后台页面。适用于服务端 M2 日志、客户端崩溃上报日志、站点访问日志的统一汇总。
服务端运行日志(每行带级别与耗时字段)、Lua 错误上报(SafeCall 写入的错误文件)、内存打点(collectgarbage("count") 定时追加)。采集脚本按行正则提取:
-- 伪代码:逐行统计
for line in io.lines(errFile) do
local ts, who, err = line:match("^(%d+-)%s+(%S+)%s+(.+)$")
local key = errHash(err) -- 错误串哈希做聚类
stat.count[key] = (stat.count[key] or 0) + 1
if not stat.first[key] then stat.first[key] = { ts = ts, who = who } end
end
错误按哈希聚类后,一天 4000 条错误被压成 12 个条目,每条带次数、首现时间、首现玩家——排查时按次数倒序处理即可。
日报固定八个字段,生成的文本直接可读:在线峰值与均值;帧率(客户端上报的 p50/p95/p99);Lua 内存峰值与 GC 次数;ERROR 总数与 Top5 错误;新增错误数(昨天没有今天有的);掉线次数与平均重连时长;GM 命令执行次数;配置重载次数。其中"新增错误数"是最有价值的一列——它直接回答"昨天那次热更有没有引入问题"。
脚本挂系统定时任务每日 06:00 生成昨日日报,写入 reports/2026-09-20.txt 并通过既有 HTTP 接口推送到 GM 群机器人。三个实践细节:统计窗口用固定时间段(00:00-24:00),跨天对比才有意义;日报本身失败要重试并告警(监控系统自己不能是哑的);连续 7 天的日报归档保留,月度对比能看出负载增长趋势。这套脚本初版约 150 行,一天完成;上线第一个月就靠"新增错误"一列抓到过一次热更引入的空指针,价值当场兑现。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 竞技场奖励"一刀切"(前 10 名有奖,其余没份)的后果:排名 11 到 50 的中间层玩家觉得自己白打了一个赛季…
业务场景 三连胜后继续匹配同段位对手没有挑战性。连胜豁免:三连胜后自动将匹配池上移一档。 核心实现 连胜计数与豁免判定。示例…
底层原理 事件系统硬编码处理函数名导致新增事件必须改分发入口——开放封闭原则的反面。事件委托表用数据代替分支:事件名到处理函…
设计初衷 坐骑系统普遍的死穴是"买了就不用管":一次性消费后坐骑沦为纯代步工具,没有养成层级。坐骑长线的设计目标:喂养、训练…
设计初衷 回流玩家的最大障碍不是数值落后,是社交断层:离开 90 天后,好友列表里一半人退游、行会换了会长、固定队散了。回归…
底层原理 引擎的 Lua 脚本跑在协作式调度里:一段脚本能跑多久,取决于它自己何时返回。批量操作(扫 5000 只怪物掉落、…