第四十六章 《山海》的压力测试


    阿坤摘下眼镜,用力揉着眉心。手指在抖。他想起三个月前,林浩在白板上画“山海”的架构图,眼神坚定地说“我们要做中国人自己的3D MMO”。想起团队加班加点,写了几十万行代码,调了几千个参数。想起今天测试前,大家眼里那种期待的光。

    现在,光灭了。

    “是我的问题。”阿坤开口,声音很干,“数据库中间件是我写的,事务隔离级别我设的,对象创建策略我定的。崩了,我负责。”

    “现在不是追责的时候。”王磊说,“问题是,接下来怎么办?测试失败了,消息传出去,玩家会失望,投资方会质疑,盛大会看笑话。”

    “重写。”另一个声音从门口传来。

    所有人回头。林浩站在玻璃房门口,穿着简单的灰色卫衣,头发乱糟糟的,看起来也一夜没睡。他手里拿着一个保温杯,走到阿坤身边,看着监控屏幕。

    “数据库中间件的线程调度模块,要重写。”林浩说,声音很平静,“现在的调度算法是简单的轮询,高并发下会有饥饿现象。要改成带优先级的抢占式调度,高优先级事务(比如战斗、交易)优先执行,低优先级(比如邮件、成就)排队。死锁检测要从被动等超时,改成主动检测,发现死锁立即拆,而不是等十分钟。”

    阿坤看着他:“现在重写?来得及吗?”

    “来得及。”林浩把保温杯放在桌上,拉过一把椅子坐下,“你们去睡,我写。天亮前,新模块上线,重新测试。”

    “你一个人?”

    “恩。”林浩已经打开了代码编辑器,调出数据库中间件的源码,“这个模块我熟。当初设计的时候,就留了后手——调度算法是插件化的,换掉内核文档就行。你们去休息,养足精神,早上八点,第二轮测试。”

    没人动。所有人都看着他,这个十八岁的创始人,在服务器崩了、测试失败、团队士气跌到谷底的时候,没有骂人,没有抱怨,只是平静地说“我重写”。

    “我陪你。”阿坤重新戴上眼镜。

    “我也在。”赵永说。

    “加我一个。”张一鸣坐回座位。

    王磊笑了,是那种疲惫但释然的笑:“行,那都别睡了。林浩写调度,阿坤调数据库,一鸣优化GC,我盯着服务器。陈默,你带美术组去睡,明天还要改特效。”

    陈默点头,带着美术组的人离开了。玻璃房里剩下九个技术内核,九台计算机,九双盯着屏幕的眼睛。

    林浩已经开始写了。手指在键盘上快速敲击,几乎不用思考。他写的是一个全新的线程调度器,基于时间片轮转加优先级抢占。高优先级事务(战斗、移动、技能)分配大时间片,低优先级事务分配小时间片。死锁检测模块独立成一个守护线程,每100毫秒扫描一次事务图,发现环就强制回滚优先级最低的事务。

    代码像流水一样从他指尖淌出。变量命名规范,注释清淅,逻辑严谨。阿坤在旁边看着,心里越来越惊。这种代码,不象现场写的,象在脑子里蕴酿了很久,只是现在倒出来。调度算法的数学证明,死锁检测的图论算法,都是研究生级别的难度,但林浩写得行云流水,像写hello world。

    凌晨四点二十,新调度模块写完。林浩敲下最后一行注释,保存,编译。没有错误。

    “部署。”他说。

    阿坤接过编译好的jar包,替换掉原来的中间件,重启服务。服务器再次轰鸣起来,监控屏幕上的数字开始跳动。

    凌晨四点五十,玩家重新连接。在线人数慢慢爬升:五千,八千,一万……突破一万二,稳住了。

    。帧率稳在30以上。

    世界频道又开始刷屏,但这次是:

    “不卡了?”

    “流畅了!”

    “浩宇牛逼!”

    “刚才是不是在偷偷优化?”

    玻璃房里,九个人盯着屏幕,没人说话。直到在线人数突破一万五,所有指标依然平稳,王磊才长出一口气,瘫在椅子上。

    “过了。”他说,声音发虚。

    “过了。”阿坤重复,摘下眼镜,这次是真的哭了,眼泪无声地流下来。不是难过,是释放,是这四十八小时紧绷的神经终于松下来的生理反应。

    林浩也靠在椅背上,看着屏幕。窗外,天快亮了,深蓝色的天幕边缘泛起鱼肚白。他拿起保温杯,喝了一口水,很凉。

    “但这只是第一关。”他说,声音很轻,但每个人都听见了,“数据库中间件的问题解决了,但伪3D喧染的瓶颈还在。万人同图,集显跑不动,这是硬件天花板。我们要做的不是突破天花板,是在天花板底下,找到能让玩家觉得‘爽’的平衡点。”

    “怎么找?”张一鸣问。

    “数据。”林浩说,“

本章未完,请点击下一页继续阅读>>