周三一早,王辰刚到公司,就被组里的程序员小李堵在了门口。
“辰哥,出事了!”小李脸色发白,“订单系统昨晚又崩了,凌晨的批量任务全部失败。”
王辰心里一沉。这个遗留系统就像个定时炸弹,用的是十年前的架构,代码臃肿得像团乱麻。
“查到原因了吗?”
“好像是数据库锁表...”小李跟着他快步走向办公区,“但最麻烦的是,日志系统也一起挂了,现在连错误堆栈都看不到。”
办公区里弥漫着低气压。几个程序员顶着黑眼圈,显然熬了通宵。
王辰打开终端,尝试连接测试环境。命令行滚动着红色的错误信息,最后停在一个数据库连接超时的提示上。
“把昨晚的监控调出来。”王辰松开鼠标,“我要看资源使用情况。”
监控图表显示,内存使用率在凌晨两点达到峰值,然后像悬崖一样跌落——典型的服务崩溃特征。
“又是那个老问题。”王辰揉了揉眉心,“oRm框架的懒加载配上N+1查询,每次批量处理都在生成上万条SqL。”
组里最资深的张工叹了口气:“这技术债欠了五年了,现在要还,得把核心模块重写。”
“业务方能给多少时间?”王辰问。
“最多三天。”项目经理老刘推门进来,脸色难看,“财务部已经炸锅了,说影响了月底结算。”
王辰看着满屏的报错日志。三天重写核心模块?简直是天方夜谭。
“我先写个临时补丁。”他拉过键盘,“把最耗资源的几个查询改写成存储过程,至少保证今晚的批量任务能跑。”
手指在键盘上飞舞,王辰突然想起天眼系统。要是这系统能预知代码bug该多好,可惜它只看得到K线图。
(妈的,早知道当年就该选金融专业。)
中午,团队叫了外卖,但没人有胃口吃饭。王辰一边啃着三明治,一边review刚写的存储过程。
“辰哥,”小李凑过来小声说,“听说冯总那边在自研分布式架构,我们要不要...”
“远水救不了近火。”王辰打断他,“先把眼前的火扑灭再说。”
下午四点,临时补丁部署到测试环境。王辰盯着监控屏幕,看着批量任务缓慢但稳定地推进。
“cpU使用率还是太高。”张工指着监控图,“峰值到85%了。”
“总比崩掉强。”王辰看了眼时间,“先上线,明天再优化。”
下班时已是晚上八点。王辰拖着疲惫的身子走出办公楼,手机上有两个未接来电,都是郭慧的。
他回拨过去:“今晚加班,刚忙完。”
电话那头沉默片刻:“吃饭了吗?”
“吃了外卖。”
“我给你留了汤。”郭慧的声音柔和下来,“回来热给你喝。”
挂掉电话,王辰抬头看着办公楼里零星的灯光。这一刻,他忽然理解了那些基金经理——在K线图背后,每个人都有一地鸡毛要收拾。