返回

重生2001从成为腾讯股东开始

首页
关灯
护眼
字体:
大
中
小
第18章 四千人,服务器崩了
保存书签 书架管理 返回列表
9月22日,上午八点四十分。 上海浦东,华融大厦。 初秋的早上透着些许闷热,任宇昕穿着一件深色夹克,单手拖着一只黑色的行李箱,大步走进了盛大网络的前台大厅。大概是搭乘早班机的原因,他的眉宇间有些疲惫。 前台核实来访者姓名后,直接将他带到了最里面的大会议室。 许进楷坐在了会议桌主位上,手里端着一杯茶。听到推门的动静,许进楷抬起头,目光停在任宇昕脚边那只还挂着深圳宝安机场托运条的行李箱上。 “腾讯这么快就放人了?”许进楷问道。 “马总前天下午就和我说了,”任宇昕拉开椅子坐了下来,“所以昨天我就抓紧把手上的事情交接完了,今天搭乘最早的航班赶过来。” 许进楷点点头,对于他来说效率才是最好的态度。 随后的十分钟里,盛大核心部门的几位负责人陆续推门进来。 人到齐了,许进楷当场宣布起新的高层任命:“各位,这位就是盛大的新任总经理任宇昕先生,以后由他全权负责《传奇》的上线及运营计划,以及公司的日常管理。” 宣布完任命,任宇昕就开始看起了技术总监谭群钊递来的测试方案,询问起了准备工作。 他问道:“下午参加测试的一共有多少个名额?” “五千零四十个账号。” 谭群钊回答道:“我们筛选了上海、苏州和杭州的一百二十六家核心网吧,每家预留了四十台电脑。从下午两点开始,按照总控台的统一指令分批登录。” “第一批先进一千人,逐步增加到两千、三千、四千,最后测试五千人的峰值数据。” 任宇昕继续往后翻阅方案细则:“进入游戏以后怎么测?” “有固定引导,打怪、公屏聊天、面对面交易、跨职业组队、同屏切换地图、高频上下线。” “每十五分钟更换一次测试内容,网吧现场的督导负责记录玩家遇到的问题,再反馈给我们。盛大机房这边,监控服务器负载和数据库写入。” 任宇昕听到这里才稍稍点了点头。 五千个玩家如果只是在游戏里挂机发呆,根本测不出什么东西,还是要靠玩家在野外释放技能打怪、拾取掉落物品、频繁交易。这一系列玩家动作产生的数据封包量和运算逻辑,比站着不动要庞大和复杂,这才能测出服务器真正的压力极限。 他翻到服务器物理配置那一页,皱起了眉头:“现在你们预估的“两万人承载能力”是怎么推算出来的?” “这是韩国方面给出的参考标准,一组物理服务器能承载五千人。”谭群钊如实说道,“我们把之前租的服务器一起组成了四组,所以暂时是按照承载两万人的估值来计算的。” “还没有测试过?” “今天是第一次完整压力测试。” 任宇昕没有再继续问下去了,他站起身拿上马克笔,在白板上写下三组数字。 9月28日,十万 10月3日,三十万 10月13日,五十万 “十万,是9月28日首批公测开放时必须要有的承载量。” 任宇昕用笔尖点着白板:“三十万,是我们初期想通过全网推广达到的同时在线人数。因此服务器、机房、骨干网宽带,都必须提前准备好。” “至于五十万,是公测十五天的战略扩容目标。” 接着,他又在旁边写下一个醒目的“五千”。 “今天要确定的就是韩国人说的,一组服务器到底能不能承载五千人!” 任宇昕扫视全场:“这个数字如果成立,十万人要二十组机器,三十万人需要六十组,五十万人需要整整一百组。” “但是,如果实际测下来一组承载不了五千人,那么后面的设备采购数量、机柜的租赁、光纤线路和维护人员,全部都要推翻再重新计算。” 说完,任宇昕转头盯着采购主管问道,“第一批设备呢?” 采购负责人挺直脊背回答道:“昨天老板的一千五百万一到账,我们就把首批合同签了。” “盛大现在租了四组服务器,另外还紧急采购了十六组最高配的IBM机型,按照单组五千人的标准,正好满足十万人的需求,还额外配了两组备用设备以防万一。” “第一批在明天下午进机房,二十六日以前,保证完成全部物理安装和网络调通。” “订单照常执行。” 任宇昕沉声道:“今天下午如果达不到五千人的标准,就按照实际测出来的缺口追加设备。九月二十八日的十万人绝对不能出问题,后面两批的采购数量,也根据今天的测试结果进行动态调整。” 坐在主位上的许进楷平静地看向采购负责人:“需要增加多少预算,今晚直接报给我。” 上午的会议一结束,盛大所有的部门立刻高速运转起来,开始为下午的“生死大考”做着最后的准备。 从工厂压制出来的三万张客户端光盘,有一部分在前一天就连夜送到了江浙沪参加测试的合作网吧,网管们先用光盘给几台母机安装好两百多兆的游戏端,再把客户端通过网吧的局域网迅速复制到了其他机器上。 下午一点五十分。 前方督导传回消息,一百二十六家网吧的五千多台测试机,已经全部准备完毕。 盛大的会议室被临时改造成了指挥中心。服务器CPU占用率、数据库并发写入队列、机房线路监控数据,被实时投射到巨大的幕布上。 下午两点整。 任宇昕下达指令,第一批账号开始登录。 两点零三分,计数器的在线人数迅速攀升到九百二十七人。 幕布上投射着游戏实时画面,新手村挤满了穿着粗布衣服的玩家。有人在城外砍鹿、打稻草人;有人不断地在比奇城和毒蛇山谷地图之间来回切换;还有人严格按照测试指令,在公屏上反复发送着长串的聊天消息。 各项图标波动不大,服务器运行一切正常。 两点十五分,第二批账号开始登录。 在线人数很快突破两千大关。聊天服务器的压力肉眼可见地上升,但在最吃服务器性能的角色移动、物品拾取和地图切换上,并没有出现很明显的延迟。 两点三十分,第三批账号涌入游戏。 两千五百人。 两千八百人。 三千零六十七人! 一直死死盯着屏幕的监控工程师突然大声汇报道:“谭总,数据库写入队列开始增加了!” “延迟多少?”谭群钊快步走到幕布前,掌心渗出了一层细汗。 “平均不到一秒,但瞬时最高已经接近两秒了。” 按照原定的极压测试流程,需要数百名玩家在同一时间、同一场景面对面交易,让武器、红蓝药品和大量金币在不同角色之间高频来回传输。 幕布上,那根原本平缓的数据库写入曲线,如同突然被拽住,迅速地抬高。 少数玩家捡起怪物掉落物品后,物品要延迟一两秒才会出现在背包里。玩家最密集的新手村出生点的画面,也开始出现短暂的卡顿。 谭群钊眉头紧锁,让工程师记下准确的时间戳和内存水位,咬牙道:“继续。” 三点整,第四批账号接入游戏。 在线人数迅速超过三千五百人。 游戏的物理反馈情况在这一会儿发生了恶化。切换地图的平均读取时间从最初的不到一秒加载,硬生生上升到了三秒以上。部分角色小退以后,直接卡在了登录界面,需要反复强制退出再重新进入。公屏的聊天信息也开始出现明显的滞后。 会议室桌上的几部座机也接二连三地响了起来,都是各家网吧的督导在陆续传回现场出现的问题。 “上海十九号网吧反馈,角色完成交易以后,买家背包没有及时刷新出物品!” “苏州七号网吧反馈,有整整十六个账号在切换过图时画面黑屏失败。” “杭州十一号网吧说,部分玩家无法拾取掉落在地面的物品。” 各种情况层出不穷,监控屏幕上,代表服务器内存占用的曲线不断向上攀升,而诡异的是,数据库的写入速度反而因为通道拥堵在开始下降。 三点十二分,在线人数突破四千。 外围的登录验证队列迅速堆积,形成了一个巨大的数据堰塞湖。 负责外围测试放行的工程师满头大汗,转头看向谭群钊:“谭总,最后一批账号还放吗?” 谭群钊死死盯着屏幕,没有立刻回答。 韩国人预估单组服务器标准承载量是五千人,可现在的总人数还不到四千一百人,整个底层架构就已经出现了极其明显的异常状态。 任宇昕双臂环抱在胸前,看着屏幕上那几条堪比心电图波动的曲线,沉稳地说道:“第五批先不要进,保持现在的在线人数,让游戏里的玩家不要停下来,继续执行最高频的测试动作。” 停止放行的命令被迅速传达到各家网吧。已经在线的四千多名玩家继续疯狂地打怪、交易、切换地图。 三点十九分,在线人数稳定在了四千三百一十二人。 服务器并没有立刻崩溃,但是游戏里的操作却越来越慢。 玩家发出的聊天消息要过四五秒钟才会在公屏上显示。有人在装备栏更换了武器,人物模型的手里还依旧拿着原来的旧装备。更有几名玩家面对面完成交易,双方的背包里面迟迟没有刷新出交易后的物品。 三点二十二分。 主监控幕布上的一条绿线毫无征兆的向下一折。 登录网关和维持在线的会话进程突然停止了响应。 “断了!” 伴随着工程师的一声惊呼,幕布上的在线人数计数器的数值开始不断下跌。 四千。 两千七。 一千一。 不到一分钟,那个代表着所有人努力的数字就彻底变成了灰色的“零”。 “不要重启!”谭群钊几乎从椅子上弹了起来,大声喝止正准备敲击键盘的下属。 “所有人别动进程!先保存内存故障信息,立刻复制底层日志,再给数据库做绝对隔离的只读快照。” 几名高级工程师迅速按照指令操作起来。 紧张的十分钟过去后,现场所有的数据保存完毕,测试服务器这才重新启动。 为了确定这种异常崩溃会不会让掉线的角色数据受损,盛大通过后台切断了公用通道,只允许各家网吧登录指定的排查账号。 最让人担心的问题,还是出现了。 八十七个角色,发生了不同程度的数据回档。有的是刚打完怪获得的经验凭空消失,有的是在重连后回到了切换地图以前的位置。 最致命的问题是,交易逻辑出了问题。 一家上海网吧的督导紧急打来电话:两位参与测试的玩家在服务器崩溃前的一分钟面对面交易了一把铁剑,重新登录以后,不仅购买人的背包里有一把铁剑,售出者的背包里还有那把本该被扣除的铁剑。 督导已经让两名玩家退出游戏,彻底清空缓存再重新登录,两个玩家的背包里还是有那把属性一模一样的铁剑。 谭群钊只觉得一阵寒意窜上了背脊,厉声道:“拉后台!让人核对二十分钟内所有的交易记录!一笔一笔查!” 下午四点十分。 一份还带着打印机余温的排查结果表被送进了会议室。 在服务器崩溃前后,全服一共出现了十七笔异常交易。 由于并发极高,系统写入产生了微小的时间差。物品接收方的数据挤进了通道,被成功保存;而物品转出方却因为数据库写入超时,被系统保护机制强制回退到交易发生前的状态。 十七件物品就这么硬生生地被复制成了两份。 许进楷看完手里的数据表,提了一个最核心的问题:“如果是玩家自己网络不好导致掉线,会不会出现这种复制情况?” “暂时还不能确定。”谭群钊神色凝重,“现在我们通过日志能确认的只有一点:交易双方的数据在底层逻辑上不是同时保存的。它是先写入接收方数据,再写入转出方数据。” “服务器恰好在这两个步骤执行的间隙出现了异常,才造成了这次极其偶然的单边回档复制。” “这种机制能不能被人故意利用?”任宇昕这句话直击要害。 “要重新搭建独立环境测试过后才能确定。”谭群钊不敢在老板面前轻易下结论,分析道:“如果必须要整个服务器的会话进程崩溃才能触发,那被玩家主动利用的概率很小。但是如果单个角色利用拔网线强制掉线来精准卡住这个时间差,从而触发复制机制,那问题就严重了。” 会议室顿时安静了下来。 服务器承载量不足,可以通过砸钱增加设备解决。 但复制物品就是网游的顽疾,只要有人在公测后找到了稳定的触发方法,游戏里所有的稀有武器、道具和金币,在几天内就会成为失去价值的废品,整个游戏经济系统就会迅速崩盘。 “今天的测试到此结束。” 许进楷放下手里的数据表:“把所有的崩溃日志、数据库快照以及全部操作过程整理成技术文档,马上联系韩国,让Actoz和emade给我们一个合理的说法。” 下午五点四十分。 跨越黄海的越洋三方电话会议正式接通。 Actoz海外项目负责人以及emade服务器架构工程师同时加入会议。盛大把下午的压力测试过程、监控数据以及那十七笔异常交易的记录都传真了过去。 面对这种严重事故,两家韩国公司也没有推卸责任,《传奇》的中国区授权合同是由Actoz、emade和盛大三方共同签订的,服务器底层逻辑的程序修补和后续支持也属于韩方必须承担的责任范畴。 但在问题的成因上,中韩两边出现了意见分歧。 Actoz的工程师先检查了盛大这边的部署环境,他认为承载四千人以后出现的严重延迟和拥堵,很大可能是因为受到了数据库参数未优化、服务器连接方式以及中国机房网络配置的综合影响,需要拿到盛大完整的日志才能确定是不是韩方代码的问题。 而作为研发方的emade工程师则更加直接,他看过那十七笔回退记录后指出:无论盛大的服务器是因为什么原因崩溃的,角色交易作为一个整体事件,在逻辑上就绝对不应该出现只保存一方数据的情况,这都是因为底层代码交易锁缺失。 两方对服务器性能瓶颈的判断虽然有不同意见,但好在很快协商好抢修的分工: Actoz负责彻查盛大这边的部署程序、数据库配置和相关的技术文档。 emade的核心团队则全权负责在韩国机房测试物品复制的漏洞,并连夜修改交易锁和角色数据保存的底层逻辑。 并约定第二天上午双方都必须提交第一份故障分析报告,并且在九月二十四日以前,emade必须向盛大提供修复后的最新测试版本。同时安排两名原本负责项目交付验收的韩国工程师第二天直接飞上海来现场办公。 眼看韩方计划好了技术排期,任宇昕又严肃地问道:“九月二十八日,能不能正常进行公测?” 首尔那端的电话里,陷入了沉默。 过了好半晌,Actoz项目负责人的声音才传了过来: “现在还不能保证。” “在底层修复物品的复制问题以后,我们还要进行大量的回归测试,包括角色交易、仓库储存、物品丢弃和死亡数据回档等。只是改动一处代码,也许又会在其他地方产生新的问题。” 电话会议在压抑中结束,任宇昕挂掉了电话后,径直来到了白板面前。 那个预期“十万、三十万、五十万”的宏伟目标依旧没有变化,但任宇昕在旁边写下了今天的实测结果: 【单组在线四千三百一十二人,进程崩溃。】 【稳定承载量,暂计三千人。】 “各位,按照单组承载三千人准备吧,十万人我们需要三十四组服务器集群。” 任宇昕扔掉了手里的笔,看向采购部:“盛大租赁的设备加上已经到货的采购设备,预备的两台服务器不能动,现在满打满算也只有二十组,我们还需要十四组。” “采购部门今晚就联系所有长期供应商,不惜一切代价,先满足九月二十八日承载量的需求。至于三十万和五十万的承载量具体需要多少设备,等拿到韩国补丁测试的结果以后,再决定最终的采购数量。” 交代好之后,任宇昕又拿起笔开始推演时间线。 9月24日,测试版本。 9月25日,第二次单组压力测试。 9月26日,多组服务器联合测试。 9月27日,最终数据核定。 “二十五日拿到韩国的新补丁后,仍旧使用今天这五千个账号进行测试,重新把今天全部的测试流程跑一遍。”任宇昕用手指敲了敲白板,“单组抗压通过以后,二十六日再测多组服务器的联合运行和网关并发。” “如果二十七日上午,游戏中依然存在复制物品的漏洞,服务器依旧达不到单组稳定承载量的标准,”任宇昕咬了咬牙,“那九月二十八日,就延迟公测。” 这话一出,会议室里几位管理的心猛地一颤,同时望向了主位坐着的许进楷。 游戏前期的宣发造势早就把盛大架了起来,如果公测跳票,公司的士气和口碑都会受到很大的冲击。 许进楷看着技术总监,问了一句:“如果我们带着这个漏洞强行上线,多久才会被市面上的玩家发现?” 谭群钊苦笑了一下,摇头道:“这种事全看运气。也许一个月都不会有人发现,但也可能,公测第一天就被网吧偶然断网的玩家发现。” “那就按任总的计划执行。” 许进楷定下了结论:“如果二十七日的结果达不到预期,公测直接延期。” 他很清醒,“今天服务器崩在了四千人,这只是压力测试结果,幸好我们发现了问题所在。但要是为了赶档期,二十八日那天在全国十万个玩家面前服务器崩了,那就是盛大万劫不复的事故。” 当天夜里,十一点零七分。 emade发来了第一份技术补充说明。 邮件内容很简短: 韩方工程师已经在纯净的测试环境中,成功重现了物品复制。 最可怕的是,根本不需要整组服务器陷入拥堵瘫痪后崩溃,只要玩家找准时机,卡好面对面交易的时间点,人为制造客户端的角色会话异常(比如强行拔掉网线),就有很大概率将物品成功保留在双方的背包。 这意味着,只要有人在公测后掌握了这个物理断线的方法,就能无限量地利用这个漏洞掠夺游戏内的财富。 许进楷盯着邮件里的测试对比结果沉默了。 随后他拿出手机,给京城那边发了一条消息,学校那边请假,他国庆假日结束前都不回去了。 他抬头看向墙上的日历。 距离那个决定中国网游历史的命运之日的到来,只剩最后五天。
上一章 目录 下一章