第8章:深夜的故障 (第1/2页)
凌晨一点十三分。
路容在黑暗中睁开眼睛。
出租屋里一片漆黑,只有窗外远处高架桥上的车灯偶尔划过天花板,投下短暂的光影。她躺在床上,呼吸平稳,但身体已经进入警戒状态——这是三年训练出来的本能。任何异常的声响、光线变化、甚至空气流动的改变,都会让她瞬间清醒。
手机在床头柜上震动。
不是电话,是连续不断的短信提示音。嗡嗡嗡,嗡嗡嗡,像一群被困在玻璃瓶里的蜜蜂。声音在寂静的房间里格外刺耳。
路容伸手拿起手机。屏幕的冷光刺得她眯起眼睛。锁屏界面上,十几条消息通知堆叠在一起,全部来自同一个企业聊天群——“星耀集团技术应急群”。
她解锁手机,点开群聊。
消息像瀑布一样滚下来。
【王总监】@所有人紧急情况!公司核心数据库访问异常,营销部、财务部、运营部均报告无法调取数据。请所有在线技术人员立即登录远程支持系统,优先级最高!
【王总监】重复一遍:所有技术人员立即上线!故障影响范围正在扩大!
【王总监】@周哲@吴建国@张明@李涛@若溪……
后面跟着一长串@名单。路容的名字“若溪”夹在中间,像一颗不起眼的石子。
她坐起身,打开床头灯。暖黄色的灯光洒下来,照亮了这个不到二十平米的出租屋。房间很简陋,一张床,一张书桌,一个衣柜,墙上贴着深港市的地铁线路图。书桌上摆着她的笔记本电脑,黑色的机身,没有任何贴纸或装饰。
空气里有灰尘的味道,混合着窗外飘进来的汽车尾气。深港市的夜晚从不真正安静,总有什么在运转——车辆、机器、或者人心。
路容掀开被子,赤脚踩在地板上。瓷砖冰凉,寒意从脚底窜上来。她走到书桌前,打开电脑。屏幕亮起,蓝色的登录界面像一扇通往另一个世界的门。
她输入密码,进入系统,打开远程支持客户端。界面加载的几秒钟里,她能听见自己心跳的声音——沉稳,有力,但比平时快了一些。
这不是普通的系统故障。
星耀集团的核心数据库采用分布式架构,有七层冗余备份,理论上不可能出现多个部门同时无法访问的情况。除非……
除非有人动了手脚。
远程支持界面加载完成。左侧是用户列表,显示所有已登录的技术人员头像和状态。路容扫了一眼——周哲在线,状态“忙碌”;IT部的吴建国在线,状态“空闲”;还有五六个她不熟悉的名字,状态都是“正在处理”。
右侧是故障报告面板。红色的警报信息一条条跳出来:
【01:07:23】营销部数据库连接超时,错误代码:503
【01:09:41】财务部核心表锁死,事务回滚失败
【01:11:15】运营部数据仓库查询队列堵塞,等待超时300秒
【01:12:58】日志服务器记录异常,疑似资源竞争
路容的手指在触摸板上移动,点开详细日志。黑色的命令行界面弹出来,白色的字符快速滚动。她眯起眼睛,瞳孔在屏幕光的照射下微微收缩。
日志显示,故障是从凌晨零点五十分开始的。最初是营销部的几个查询请求响应变慢,然后像多米诺骨牌一样,连锁反应蔓延到其他部门。但奇怪的是——故障的传播路径不是随机的。
它像是有选择性的。
财务部的核心表被锁死,但辅助表正常;运营部的数据仓库查询堵塞,但实时流处理通道畅通;营销部的历史数据无法访问,但当天的新增数据可以正常写入。
这不像硬件故障,也不像普通的软件bug。
这像是一种……测试。
或者,一种警告。
路容的呼吸变轻了。她靠在椅背上,手指无意识地敲击桌面。木质桌面传来沉闷的咚咚声,节奏稳定,像心跳的模拟。
企业聊天群里,消息还在滚动。
【张明】我这边看了,数据库服务器CPU使用率正常,内存也没爆,奇怪了
【李涛】网络连接检测过了,没问题,ping值都在5ms以内
【王总监】@所有人别在群里闲聊!上远程系统,统一排查!半小时内必须解决!李总明天早上要看报表!
王总监的消息后面跟着三个感叹号,像三把悬在头顶的刀。
路容盯着屏幕,没有在群里回复。她的手指在键盘上停顿了几秒,然后开始快速敲击。
她新建了一个临时讨论组。
组名:“故障排查_临时”。成员:周哲、吴建国、还有她自己。
没有邀请其他人。
讨论组创建成功。路容在输入框里打字,手指在机械键盘上敲出清脆的咔嗒声。房间里只有这个声音,和窗外隐约传来的汽车引擎轰鸣。
【若溪】@周哲@吴建国两位老师好,我是数据分析部的若溪。我这边看到一些异常模式,想请两位帮忙确认一下。
消息发送出去。
几秒钟后,周哲的头像旁边出现“正在输入”的提示。
【周哲】什么模式?
路容切回远程支持系统,打开另一个命令行窗口。她输入一串命令,屏幕上的字符像流水一样滚动。她的眼睛快速扫过每一行输出,大脑像一台精密的处理器,过滤无关信息,提取关键数据。
故障表现很奇特。
数据库连接没有真正断开,而是被某种机制“挂起”了。查询请求进入等待队列,但队列的处理线程被占用,不是被其他任务占用,而是被……空循环占用了。
就像有一个人站在门口,不进去,也不离开,就堵在那里。
路容的手指再次敲击键盘。
【若溪】请两位看一下日志服务器的/var/log/mysql/slow_queries.log,时间范围00:50到01:10。注意第34行到第47行。
她发送消息,然后等待。
房间里很安静。她能听见冰箱压缩机启动的嗡嗡声,能听见楼上邻居冲马桶的水流声,能听见自己吞咽口水时喉咙的轻微响动。三种声音在黑暗里交织,像一首不协调的交响乐。
临时讨论组里,吴建国回复了。
【吴建国】看了。锁等待时间异常,但锁持有者显示为“system”,不是具体进程。
【周哲】我也看到了。这不对劲。system进程不会主动持有用户表锁。
路容的嘴角微微上扬,一个几乎看不见的弧度。她继续打字。
【若溪】请再执行:showprocesslist;然后过滤state为“Usersleep”的连接。
这次,周哲的回复快了一些。
【周哲】有七个连接处于Usersleep状态,sleep时间都超过300秒。连接来自……内部IP,10.0.5.x段。
10.0.5.x段。
路容的瞳孔收缩了一下。
那是测试服务器的IP段。按理说,测试服务器不应该在生产环境持有数据库连接,更不应该让连接处于休眠状态超过五分钟。
除非有人故意这么做。
她切回命令行,输入另一串指令。屏幕上的输出快速滚动,白色的字符在黑色背景上像一群受惊的飞鸟。路容的眼睛盯着屏幕,手指在键盘上悬停,像钢琴家等待下一个和弦。
找到了。
七个休眠连接,全部来自同一台测试服务器——test-05。而test-05服务器的管理员权限,上周刚刚变更过。
新的管理员是:王总监。
路容的呼吸停了一拍。
(本章未完,请点击下一页继续阅读)