也算是个困惑很久的问题了,今天等WOW开服一等就是一天,真是从白天到黑夜,所以很奇怪网游的服务器维护这么长的时间,究竟要做要哪些工作呢!?
紧急维护一般就是硬件故障或者严重Bug. 这个时候是各个团队最紧张的时候. 每个团队都忙个不停.
策划团队可能会考虑Bug的影响程度, 决定要不要回档, 或者赔偿什么, 赔偿会不会影响经济系统等等.
程序团队最重要的是缩小Bug的影响, 比如热更新屏蔽玩法, 然后解决Bug. 有时候硬件故障会导致整个服务器某些结点负载不均衡, 或者万一数据库服务器挂了就得赶紧切数据库. (悄悄吐槽一下IBM的硬件.. 真心故障率太高)
程序一般就是更新代码, 部署到服务器内部测试, 如果架构有改动, 就和SA配合一起跑脚本改架构. 同时, 另一拨人会跑一堆脚本, 包括和计费的对账脚本, 导数据的脚本, 更新各种榜单的脚本, 预热数据库和cache的脚本等等. 每个人也会对自己的模块再测试一遍, 然后会盯着各种警报
另外看到很多答案都说重启服务器, 其实我想说, 我们真的很少重启服务器的. 每次重启代价都很大. 除非硬件更新或者特殊情况是不会重启服务器的.
其实一般意义上讲服务器重启可以理解为两种, 一种是硬件重启, 一种是服务器进程重启. 硬件重启比较少, 服务器进程重启基本上是必须的.
如果是自动启动的程序的话没有问题,但是服务器很多系统配置和软件设置都要开机后重新折腾,同时,还要和其他的服务器通信,恢复到启动前的状态,或者从其他服务器同步信息,正确处理关机期间的各种操作,事情多,任务重,出错概率大,都不愿意重启吧。
有人问关于IBM机器的故障问题.. 我只能说也许我们那一批运气不好. 好几台机器的内存坏了. 给我们造成了不小的影响. IBM的口碑很好. 所以才会让我觉得很诧异
还有人提问为什么维护了这么长时间.. 我想说. 请去客服专区或者论坛发帖, 会有一大波运营人员过来安抚你的.
还有人抱怨一个礼拜维护两次这种. 我想说EVE这种神作是每天早上维护一次呢. 维护也是为了大家能更好的游戏啊. (吐槽一下谁让EVE用的是Windows服务器呢.)
给各位任务NPC提供奖励物品,顺便处理一下少数人员任务信息发布错误,不提供奖品的恶劣行为。
因为游戏也是程序的一种,程序都是人类编写出来的,不存在完美的游戏一说,再好的游戏也会有各种bug漏洞出现,而只不过我们是没有发现而已。
那么,这些游戏的运营厂商每一次更新的内容到底是啥呢?我去找了几个有代表性质的游戏更新说明(里面会有以下画下划线需要注意的地方),来看一下:
整个维护过程预计需要3个小时,因开机顺序以及数据维护内容差异,部分大区会提前开放。因停机给大家带来的不便,我们深表歉意。
好滴,我们看到他们修改了很多游戏中出现的错误,这些错误来源可能有很多原因,比如游戏代码编写时候的逻辑问题(比如上面的英雄联盟、WOW里面下巴错误小时),比如服务器的策略或者相关的配置问题(经常的卡顿啊,突然的掉线啊),定期需要维护以便让游戏保持稳定(DNF里面的维护过程),好的,那我们把这三点分开来说:
研发团队:主要就是负责前期的设计、制作、生产出成品的游戏,或者是引进游戏后的本地化,如果引进的游戏是国外的团队的游戏,还需要在当地的游戏公司设立一个联络点;然后就是根据玩家或者客服的反馈等等不断的对游戏进行优化或者改进
运维团队:对游戏服务器的维护啊,游戏逻辑错误的地方,检查问题啊,确保游戏在正式运行的时候不要出问题
营销团队:游戏策划?推出一个新的活动?决定要不要根据游戏的新特性或者问题做什么措施之类的。
然后呢,游戏的服务器是分为内网和外网的,内网顾名思义就是用来测试有没有bug有没有问题测试新版本的服务器,而外网则是广大玩家可以解除到的服务器啦~
运营团队发现了好多问题,反馈→运维团队来看看,居然真的是这样,看看哪些我可以改进,卧槽这么严重,反馈→研发团队一看,卧槽居然真的有问题,啥都不说了赶紧改吧,这个问题是怎么引起的怎么去屏蔽去修正,恩,感觉没啥问题了,再自己看看,好像是好了→
运维团队在内网测试一下,恩,好像真的没有问题了(如果还有需要返工),那就这样吧,发布补丁或者更新服务器
→运营团队(写公告,来看看这次这个bug的影响大不大)+营销团队(恩,问题大的话就补偿点装备或者游戏时间吧,不过一定别再造成问题了,不然游戏里面的平衡性和物价系统可能会崩溃)
→运营团队(各位亲,我们已经更新游戏了哦,快来看看吧)顺便及时跟进看看会不会出现新的问题+运维团队(我也怕出现新的问题啊!!!)
@林路翔顺便说一下林老师说的其实挺完全的,我打算补充一下,后来发现好像要花很多文字去补充……
@林路翔答的挺好的,基本概括了正常情况下服务器维护所做的事情,如果一切正常的话,这些事情一般可以在两个小时内完成。但是考虑到题主问的是“那么长时间都在做什么”,那我就补充一下可能会导致延迟开机的原因,一般来说可能是如下几种:
当次维护有硬件更换或者服务器操作系统更新,这种操作可能会产生一些不可预知的风险,当然这种次数不会很多。
每次维护的前一天晚上,开发组会把当周维护需要更新的玩法全部测试完毕才会下班(加班到凌晨是常有的事),然后第二天早上把这些玩法全部放到线上,但是在正式开外部访问之前,测试人员会再测试一遍各种玩法。一旦在这个期间发现新的bug,那基本上就必须要延期了。这个时候程序猿们在紧急修复,大家也不用在论坛上催啦。
当次维护修复了以前的bug,但是这个bug已经产生了错误的玩家数据,这时候就需要进行一个操作叫做“扫档”。其实就是扫描数据库,把玩家身上因为bug或者其他问题导致的错误数据离线修复好,这个操作比较耗时。
当次维护有合服等非常规操作,合服就会涉及到数据迁移,这个过程一般是会比较慢的,可能会导致延期。
比如,策划改怪物配置的时候改串行了,给一个小怪加了BOSS强度;一个功能正常没有问题,只在多人重复操作才会出现问题或者多人交互才会出现问题,等等情况,内网都是很难测到的。
然后是发现了BUG后修复的方法,一般来说如果是脚本就能解决的问题,是尽量热处理更新的(即只需要在服务器替换一个文件,无需关服,无需玩家更新),但是如果有程序或者客户端显示的问题就需要重新做补丁包(半个小时左右,不含测试时间)。
决定了修复的方式后,策划或者程序会把更新提交给测试部门,测试部门经过再一次测试后(不止测试当前更新内容,还需要测试是否会因为更新影响其他功能)再交给运营部门,放到服务器上面去。
如果还发现有BUG,就需要重复以上步骤,如果是临时发现一个很难修复的BUG,那么时间就会继续延长。
其次是应用程序维护 比方说游戏的服务端以及相应的各种服务程序 这些程序也要相应的升级除Bug
最后就是安全维护 通过检查数据库 系统运行日志 看看网络数据流 对未知攻击进行判断以及后期预防
一般的例行维护 基本上就是重启服务端或者重启系统让系统自动清理无用缓存 释放一下内存 准备下一次被玩家蹂躏
突发的紧急维护(临时维护) 有可能是惊现Bug服务器紧急下线维护避免玩家的不必要损失和不正当得利 如果时间相对较长 有可能在联系制作商重新编写吧或者遭受到网络攻击了
高冷腹黑老员工…那个谁 你擦了一上午的玩意是咱们机房的空调不是三区的服务器 把抹布洗一下重新擦 路上顺便让他们发一个延迟维护的消息!
补充说明下@林路翔的答案,他已经说得很清楚了。至于为什么维护需要很长时间,因为研发使用的内服务器和玩家开放的外服务器往往不是同一个。每次维护开始,就需要把这次更新的内容放到外服务器。更完后,QA和策划需要在外服务器上进行一轮测试,防止有bug外放出去。如果这个时候发现临时的bug,就要进行修复,会导致维护时间延长。
或许有人会问,为什么你们不在内服务器都测试完毕?我只能说,没有人能保证“百分百”没有问题的。任何一个数据在上传时候失误,都可能导致严重的bug,比如一个逗号,或者一个0。越是重大的更新,开服前需要测试的就越多。
然而紧急维护有时候无法避免,因为外服服务器环境和内服服务器环境是不一样的,尤其是像魔兽世界这样的游戏,几十万甚至几百万的玩家在线,会产生大量不确定因素,而在内服测试的时候,很可能只是几个人在测试,总会有一些诡异的无法预测的情况发生,不得不紧急维护。所以,所有的游戏,才叫“公测”嘛,公测公测,就是大家一起来帮忙测啊,哈哈

