服务器 CPU 冲到九成才开始关注,往往已经错过了最佳处置窗口。资源水位机制给 CPU、内存、磁盘、连接数四项资源设两级水位:七成预警、八成五告警,水位数据每分钟采集入台账,预警触发自动扩容评估,告警触发值班介入,容量从被动救火转为主动管理。
采集器每分钟记录四项资源的当前值,与两级阈值比对;预警级记录台账并通知值班,告警级触发扩容评估流程。示例代码如下:
-- 资源水位:采集与阈值
local player = class(actor)
local THRESH = {
cpu = {warn = 70, alarm = 85},
mem = {warn = 70, alarm = 85},
disk = {warn = 75, alarm = 90},
conn = {warn = 70, alarm = 85},
}
local function checkResource(player, res, value)
local t = THRESH[res]
if t == nil then return end
if value >= t.alarm then
sendcentermsg(player, 255, 0, res .. " 资源告警:" .. value .. "%,请立即扩容评估!", 0, 10)
elseif value >= t.warn then
sendmsg(player, 1, 0, res .. " 资源预警:" .. value .. "%,已接近告警线。")
end
end
水位数据按小时归档生成趋势曲线,连续七天处于预警区间的资源列入扩容议程;扩容决策引用四周趋势而非单日峰值,避免为瞬时毛刺买单。示例代码如下:
-- 水位台账:趋势与决策
local player = class(actor)
local function trendDecision(player, res, weekAvg, weekPeak)
if weekAvg >= THRESH[res].warn and weekPeak >= THRESH[res].alarm then
setsysvarex("ScalePlan_" .. res, os.date("%Y%W"), true)
sendmsg(player, 1, 0, res .. " 已列入扩容议程:周均 " ..
weekAvg .. "%,周峰 " .. weekPeak .. "%。")
return true
end
return false
end
验证机制自身:注入模拟水位确认两级阈值触发正确、台账按小时落盘无缺分、趋势判定对边界周均值的响应准确。水位监控本身也要被监控:采集断档超过 10 分钟告警,防止仪表盘失明。线上看三个数:各资源的水位分布、扩容决策的执行周期、告警到处置的平均时长,处置时长超过 30 分钟说明值班链路有待打磨。
CPU 曾按瞬时值采集,单次毛刺天天触发预警,改为一分钟均值后曲线可用。磁盘水位曾不含日志盘,日志把盘写满导致存档失败,四项资源分区采集。告警曾全部推给单人,休息时段无人响应,值班轮转表接入告警路由,任何告警都要有人且有人能动手。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
学员常见误区 Lua函数可返回多个值,学员用固定变量数接收时如果变量少于返回值,多余返回值被静默丢弃;如果变量多于返回值,多…
设计初衷 行会建筑的死穴是一次全解锁:会员没有逐步建设的过程感。梯度设计让每栋建筑都有前置条件和资源门槛。 数值模型 建筑分…
设计初衷 婚姻系统的属性加成是社交玩法的经济锚点:加成太弱没人结婚,太强则"为了属性被迫结婚"扭曲了社交本质。婚姻边界的设计…
设计初衷 宝箱类玩法的信任危机都源于同一句话:"概率是不是骗人的。"期望公示把概率从事后争议变成事前契约:奖池概率表全量公示…
设计初衷 流拍物(拍卖未成交的退回物品)堆积在卖家背包里成为死资产:低价值物流拍后无人问津,高价值物流拍后卖家不愿降价重拍。…
业务场景 沙巴克战功榜每周结算,玩家提交战功前不知道"再打多少能进前 10、前 10 的奖励是什么"。名次预览:输入自己的战…