停服维护是运营的例行手术:改配置、修数据、升版本都要一个安静的服务器。维护的体验好坏在细节——公告是否提前、补偿是否到位、开服是否准点,自动化把这三件事的执行从人肉变成流程。
---维护的定时编排:提前公告与自动停服
setontimerex(86, 60)
function Maintain.tick()
local hm = os.date("%H%M")
-- 开服前 24 小时与 1 小时各公告一次
if hm == Maintain.announceAt1 then
sendmsg(nil, 1, "服务器将于明日 02:00-04:00 停服维护,补偿 500 元宝")
elseif hm == Maintain.announceAt2 then
sendmsg(nil, 1, "服务器 1 小时后停服维护,请及时下线")
elseif hm == Maintain.shutdownAt then
Maintain.beginShutdown()
end
end
---停服的收尾:踢线、落盘、关服
function Maintain.beginShutdown()
Ledger.flush()
MailQueue.persist()
Gateway.kickAll("服务器维护中,12:00 见")
os.execute("shutdown_cmd")
end
维护的编排三条时间线:提前 24 小时首次公告(含补偿承诺)、提前 1 小时二次提醒、准点停服。停服的收尾走标准流程:内存缓冲落盘、邮件队列持久化、全服踢线带文明话术——数据的一致性在停服前完成收尾。补偿的 500 元宝不靠人肉发放:开服后的补偿任务按停服时长自动计算,超时的每多 10 分钟追加 100 元宝,补偿的承诺与执行由同一份配置驱动。
---开服前的自检:全绿才放行
function Maintain.preOpen()
local checks = {
{ name = "配置装载", fn = Cfg.loadAll },
{ name = "数据库连通", fn = DB.ping },
{ name = "冒烟用例", fn = Smoke.run },
{ name = "补偿发放", fn = Compensate.send },
}
for _, c in ipairs(checks) do
local ok = c.fn()
if not ok then
Ops.alert("开服自检失败:" .. c.name)
return false
end
end
Gateway.openListen()
sendmsg(nil, 1, "维护完成,服务器已开放!")
return true
end
开服前自检四项全绿才开门:配置装载、数据库连通、冒烟用例、补偿发放——补偿在开门前发到位,玩家进门的第一个邮件就是维护的诚意。自检失败的熔断让坏版本停在门外,开服时间顺延的公告比带病上线体面。维护的窗口避开活动与攻城的日历冲突,维护的排期与运营的活动表同一份日历管理。维护记录的档案:每次的停服时长、变更内容、补偿金额,维护的账本透明可查。
维护窗口的执行偏差统计:公告时刻、停服时刻、开服时刻与计划的偏差,超 15 分钟的偏差复盘;补偿的到账率核验,承诺与实际发放的对账为零差额。
公告曾经发在维护开始后,玩家的第一反应是服务器炸了,公告的前置化成为铁律。补偿曾经按在线名单发放,离线玩家漏领,发放的名单改为全服注册玩家。自检曾经漏了跨服组件,主服开门了跨服还关着,检查项的清单与架构对齐。
维护的固定时段培养玩家习惯:每周四凌晨的例行窗口写进官网。维护的补偿标准公示,时长的换算透明。紧急维护的流程与例行走两条路:紧急的公告随事件发,补偿的标准另计。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 付费玩家的付费点集中在商城,成长线里缺一个长期投入的钩子。成长基金让玩家在低等级时一次性买入,随等级提升…
实战应用:用在哪里 行会联赛打得不热闹,观战人数不到参赛人数的一半。联赛竞猜给观战者一张入场券:用竞猜币押注胜负,赔率随投注…
实战应用:用在哪里 七夕限时活动原计划七天,上线第二天下午整点活动面板突然关闭,奖励领了一半,玩家以为被砍了福利,两小时内工…
实战应用:用在哪里 HTTPS 证书过期一次,全服登录白屏了半个多小时,值班才发现证书没人管。证书续期机制把到期日写进系统变…
实战应用:用在哪里 从行会面板点进成员列表再点开个人名片,连按返回键直接退回了主城,中间两层界面全部跳过。界面堆栈管理用一张…
实战应用:用在哪里 限时商城的稀缺商品上架即被抢,玩家错过窗口感觉被区别对待。商城橱窗把每件限时商品的下架时间做成可视化倒计…