字:
关灯 护眼
范文吧 > 复仇星耀途 > 第8章:深夜的故障

第8章:深夜的故障

    凌晨一点十三分。

    路容在黑暗中睁开眼睛。

    出租屋里一片漆黑,只有窗外远处高架桥上的车灯偶尔划过天花板,投下短暂的光影。她躺在床上,呼吸平稳,但身体已经进入警戒状态——这是三年训练出来的本能。任何异常的声响、光线变化、甚至空气流动的改变,都会让她瞬间清醒。

    手机在床头柜上震动。

    不是电话,是连续不断的短信提示音。嗡嗡嗡,嗡嗡嗡,像一群被困在玻璃瓶里的蜜蜂。声音在寂静的房间里格外刺耳。

    路容伸手拿起手机。屏幕的冷光刺得她眯起眼睛。锁屏界面上,十几条消息通知堆叠在一起,全部来自同一个企业聊天群——“星耀集团技术应急群”。

    她解锁手机,点开群聊。

    消息像瀑布一样滚下来。

    【王总监】@所有人 紧急情况!公司核心数据库访问异常,营销部、财务部、运营部均报告无法调取数据。请所有在线技术人员立即登录远程支持系统,优先级最高!

    【王总监】重复一遍:所有技术人员立即上线!故障影响范围正在扩大!

    【王总监】@周哲 @吴建国 @张明 @李涛 @若溪 ……

    后面跟着一长串@名单。路容的名字“若溪”夹在中间,像一颗不起眼的石子。

    她坐起身,打开床头灯。暖黄色的灯光洒下来,照亮了这个不到二十平米的出租屋。房间很简陋,一张床,一张书桌,一个衣柜,墙上贴着深港市的地铁线路图。书桌上摆着她的笔记本电脑,黑色的机身,没有任何贴纸或装饰。

    空气里有灰尘的味道,混合着窗外飘进来的汽车尾气。深港市的夜晚从不真正安静,总有什么在运转——车辆、机器、或者人心。

    路容掀开被子,赤脚踩在地板上。瓷砖冰凉,寒意从脚底窜上来。她走到书桌前,打开电脑。屏幕亮起,蓝色的登录界面像一扇通往另一个世界的门。

    她输入密码,进入系统,打开远程支持客户端。界面加载的几秒钟里,她能听见自己心跳的声音——沉稳,有力,但比平时快了一些。

    这不是普通的系统故障。

    星耀集团的核心数据库采用分布式架构,有七层冗余备份,理论上不可能出现多个部门同时无法访问的情况。除非……

    除非有人动了手脚。

    远程支持界面加载完成。左侧是用户列表,显示所有已登录的技术人员头像和状态。路容扫了一眼——周哲在线,状态“忙碌”;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进程不会主动持有用户表锁。

    路容的嘴角微微上扬,一个几乎看不见的弧度。她继续打字。

    【若溪】请再执行:show processlist; 然后过滤state为“User sleep”的连接。

    这次,周哲的回复快了一些。

    【周哲】有七个连接处于User sleep状态,sleep时间都超过300秒。连接来自……内部IP,10.0.5.x段。

    10.0.5.x段。

    路容的瞳孔收缩了一下。

    那是测试服务器的IP段。按理说,测试服务器不应该在生产环境持有数据库连接,更不应该让连接处于休眠状态超过五分钟。

    除非有人故意这么做。

    她切回命令行,输入另一串指令。屏幕上的输出快速滚动,白色的字符在黑色背景上像一群受惊的飞鸟。路容的眼睛盯着屏幕,手指在键盘上悬停,像钢琴家等待下一个和弦。

    找到了。

    七个休眠连接,全部来自同一台测试服务器——test-05。而test-05服务器的管理员权限,上周刚刚变更过。

    新的管理员是:王总监。

    路容的呼吸停了一拍。

    她靠在椅背上,闭上眼睛。脑海里快速闪过几个画面——王总监在会议室里冰冷的眼神,工位调整时那抹得意的微笑,还有今天下午,她经过王总监办公室时,听见里面传来的压低声音的电话:

    “……必须给她点颜色看看……李总那边我会解释……”

    当时路容没有多想。现在,这些碎片拼凑在一起,形成了一个模糊但危险的图案。

    王总监在测试服务器上做了手脚,制造了这场“故障”。目的是什么?给她一个下马威?测试她的技术能力?还是……更深的算计?

    路容睁开眼睛,眼底一片清明。

    不管目的是什么,现在必须解决故障。而且,必须用“若溪”这个身份该有的方式解决——不能太突出,不能太老练,但也不能毫无作为。

    她重新开始打字。

    【若溪】@周哲 @吴建国 我有个猜测,不一定对。那七个休眠连接可能是测试脚本残留,脚本异常退出但连接没释放。可以尝试从测试服务器端强制kill连接吗?

    消息发送出去。

    路容等待回复的时候,手指无意识地摩挲着键盘边缘。塑料外壳有些磨损,边缘微微发亮,那是长期使用留下的痕迹。这台电脑陪了她三年,从“路容”到“若溪”,从天才新星到职场幽灵。它记得她所有的搜索记录,所有的代码尝试,所有深夜里的孤独和愤怒。

    临时讨论组里,周哲回复了。

    【周哲】有权限。我试试。

    几秒钟后。

    【周哲】kill了三个连接。另外四个……权限不足。

    【吴建国】权限不足?test-05的root权限被改了?

    【周哲】嗯。管理员换人了。

    讨论组里沉默了几秒。

    路容能想象屏幕那头的两个人此刻的表情——周哲皱着眉头,手指在键盘上敲击,试图找到绕过权限的方法;吴建国靠在椅背上,眯着眼睛,心里盘算着这背后的意味。

    她继续打字。

    【若溪】如果从数据库端强制终止连接呢?用super权限执行:kill connection [id];

    这次,回复的是吴建国。

    【吴建国】可以。但需要确认连接id。而且,super权限只有我和周工有。

    【若溪】连接id在slow query log里有记录。第38行、42行、45行、49行。

    消息发送出去。

    路容等待的时候,端起桌上的水杯喝了一口。水是凉的,顺着喉咙滑下去,带来一阵轻微的寒意。窗外的天空是深紫色的,没有星星,只有城市的光污染在云层上涂抹出一片朦胧的橙红。

    临时讨论组里,吴建国发来一条消息。

    【吴建国】小姑娘,眼挺尖啊。连日志行数都记得这么清楚。

    路容的手指停顿了一下。

    她意识到自己犯了一个小错误——作为一个“新人”,不应该对日志文件熟悉到能精确指出行数。这太老练了,太像……曾经的她。

    她快速打字补救。

    【若溪】刚才查日志的时候特意记了一下,怕自己看错了。

    这个解释有些牵强,但勉强说得通。

    几秒钟后,周哲回复了。

    【周哲】连接已终止。数据库锁释放了。

    几乎同时,企业聊天群里跳出一条消息。

    【李涛】哎?恢复了!营销部那边说能访问了!

    【张明】财务部也正常了!

    【王总监】@所有人 故障排除完毕,辛苦了。相关技术人员写一份事故报告,明天上午十点前发给我。

    王总监的消息后面没有感叹号,语气平静得像什么都没发生过。

    但路容知道,有什么已经发生了。

    临时讨论组里,吴建国发来最后一条消息。

    【吴建国】行了,散了吧。明天还得早起。

    周哲回复了一个简单的“嗯”。

    路容盯着屏幕,手指在键盘上悬停了几秒,然后敲出两个字。

    【若溪】谢谢两位老师。

    她退出讨论组,关闭远程支持系统,合上笔记本电脑。屏幕暗下去,房间里唯一的光源消失了,只剩下床头灯那团暖黄色的光晕。

    路容靠在椅背上,闭上眼睛。

    脑海里复盘刚才的每一个细节。

    故障表现——针对性的资源锁死,像测试又像警告。

    故障源头——测试服务器test-05,管理员权限变更。

    解决过程——她引导了排查方向,但控制在了“新人该有的水平”。

    周哲的反应——那个“?”,还有后续的沉默。

    吴建国的反应——“眼挺尖啊”。

    最后一个,最值得玩味。

    路容睁开眼睛,拿起手机。屏幕还亮着,停留在企业聊天软件的界面。她退出群聊,回到主界面,然后看到了一条未读私信。

    发送者:吴建国。

    时间:凌晨一点四十六分。

    内容只有一句话:

    “小姑娘,手挺生,路子挺野。明天下午三点,B2层备用机房,换过滤网。”

    路容盯着这条消息,看了整整一分钟。

    手挺生——指的是她打字的速度和指令的输入方式,还不够熟练,有生疏感。

    路子挺野——指的是她解决问题的思路,不按常规,直接切中要害。

    换过滤网——一个再普通不过的杂活,IT部最基础的维护任务。

    但约定地点:B2层备用机房。

    那个地方路容知道。在地下二层,靠近停车场入口,平时很少有人去。机房没有监控——至少明面上没有。因为里面存放的都是淘汰的旧设备,价值不高,安保级别很低。

    一个绝佳的,私下谈话的场所。

    路容放下手机,走到窗边。她拉开窗帘,看着窗外深港市的夜景。高楼大厦的灯光像无数双眼睛,在黑暗中静静注视。远处,星耀集团的大厦还亮着几盏灯,在楼群中像一个沉默的巨人。

    凌晨的风从窗户缝隙钻进来,带着潮湿的凉意。路容能闻到空气中淡淡的汽车尾气味,能听见高架桥上偶尔驶过的货车的轰鸣,能感觉到玻璃窗传来的轻微震动。

    三种感官信息在脑海里交织。

    她转身回到书桌前,打开抽屉,取出一个黑色的笔记本。翻开,里面是她这一个月来记录的所有信息——李剑的行程规律,王总监的派系关系,部门的人员架构,还有她发现的那些异常数据模式。

    她在新的一页写下:

    “凌晨故障。测试服务器test-05。王总监权限。吴建国邀约。B2机房。”

    写完,她合上笔记本,放回抽屉。

    床头柜上的电子钟显示:凌晨两点零七分。

    路容关掉床头灯,躺回床上。黑暗重新笼罩房间,只有窗外远处的灯光在天花板上投下模糊的光影。她闭上眼睛,但大脑还在运转。

    明天的会面,是机会,也是风险。

    吴建国看出了什么?他是什么立场?是李剑的人,还是孙明远的人?或者,他只是个看不惯公司现状的老技术员?

    路容不知道。

    但她知道一点——在星耀集团这座布满监控的迷宫里,她终于找到了第一个,可能不是敌人的身影。

    窗外的城市渐渐安静下来。

    路容在黑暗中调整呼吸,让心跳慢慢平复。她的手指无意识地攥紧了被角,布料粗糙的触感从指尖传来。她能听见自己的呼吸声,平稳,绵长,像潮汐。

    凌晨两点二十三分。

    她睡着了。
『加入书签,方便阅读』