首页 / 技术文章地图 / 正文

【工具链】性能日报脚本:帧率、内存、错误数的每日自动统计

发布:2026-09-20 08:45 | 作者:996 技术组 | 4 阅读
完整课程入口:996 全套课程体系Lua 学习路径幂尔框架 mirs.cn

实战应用:用在哪里

"今天服务器稳不稳"不该靠玩家反馈才知道。性能日报把三组核心指标(帧率/内存、错误数、在线与负载)按天自动汇总成一份报告,推送到 GM 群或后台页面。适用于服务端 M2 日志、客户端崩溃上报日志、站点访问日志的统一汇总。

数据采集:三个来源三个解析器

服务端运行日志(每行带级别与耗时字段)、Lua 错误上报(SafeCall 写入的错误文件)、内存打点(collectgarbage("count") 定时追加)。采集脚本按行正则提取:

lua
-- 伪代码:逐行统计
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 后端逻辑、客户端界面与版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
© 威海旷世互娱 · 返回文章地图 · 课程体系 · 幂尔框架