当前位置:首页 > 焦点

非仙勿扰服务器出错怎么回事

《非仙勿扰》的非仙服务服务器又炸了。2024年3月16号晚上八点多,勿扰游戏里正赶上“仙盟争霸”跨服战,器出全服在线人数冲到十二万上下,非仙服务然后——画面卡死,勿扰技能放不出去,器出聊天框里刷屏的非仙服务“???”比弹幕还快。三分钟后,勿扰登录界面弹出“网络连接超时”,器出再刷新,非仙服务直接显示“服务器维护中”。勿扰这不是器出第一次了,二月份“情缘版本”更新那天也崩过一回,非仙服务但那次只停了四十分钟。勿扰这回从八点二十一直修到凌晨一点半,器出官方才发了个公告,说“机房核心交换机故障”。

我找在游戏公司做运维的朋友聊了聊。他看了《非仙勿扰》的架构后说,问题大概率出在跨服战的流量调度上。这游戏分三个大区,每个区又有几十组服务器,跨服战需要把不同区的玩家数据实时同步到一个临时战斗服。平时单服在线峰值也就两三万人,跨服战一开,所有区的请求全往一个入口挤。他们的负载均衡策略太粗暴——按IP段轮询,没做动态权重。结果就是某几台机器被打满,CPU飙到98%,然后连锁反应,数据库连接池耗尽,整个集群雪崩。

更麻烦的是他们的数据库用了读写分离,但跨服战写操作太频繁。玩家每放一个技能、每捡一个道具都要写日志,主库的QPS直接冲到八万,从库同步延迟超过十五秒。这时候如果有人充值,订单状态先写主库,再从库还没同步完,玩家那边就显示“未到账”。论坛上当晚有三十多个帖子骂“吞钱”,其实不是吞,是延迟。运维紧急切了主库,但切换脚本有个bug——没清空旧连接,导致部分请求还在往已经挂掉的节点发。这一来一回,修了五个小时。

官方公告里只提了“交换机故障”,没提数据库和负载均衡的事。我猜他们不想暴露架构短板。但玩家不傻,有人扒出他们去年校招的运维岗位JD,要求里写着“熟悉Nginx+Keepalived”,没提Kubernetes或服务网格。这说明技术栈偏传统,应对突发流量的弹性能力有限。对比一下,同样做仙侠MMO的《云梦四时歌》,去年跨服战用了阿里云的弹性容器实例,流量高峰自动扩容到两百个Pod,全程没掉线。当然,《非仙勿扰》是小厂,预算有限,可能租的是物理机,扩容没那么快。

还有个细节:当晚十点左右,部分玩家发现能登录了,但进去后角色数据回档到七点半。有人刚打完的副本奖励没了,有人刚买的时装消失。官方后来补偿了五百仙玉和一张抽卡券,但没提回档原因。我推测是他们在恢复数据时用了昨天的全量备份,加上今天的binlog,但binlog可能没及时归档,丢了一段。这种事故在游戏行业不算罕见,但处理速度确实慢——从出事到回档完成,用了将近三小时。正常来说,如果有完善的监控和自动化恢复流程,半小时内应该能切到备用集群。

现在游戏是能玩了,但跨服战改成每周只开一次,而且限制了单场人数。官方说“为了优化体验”,其实就是怕再崩。玩家群里有人调侃:“非仙勿扰,非钱勿扰,现在再加一句——非修勿扰。”话糙理不糙。服务器稳定性是MMO的命根子,尤其这种靠社交和竞争驱动的游戏。你画面再仙、剧情再虐,一打架就掉线,谁还充钱?我那个运维朋友最后说了句实在话:“他们缺的不是技术,是肯在架构上花钱的决心。”

分享到: