第8章:深夜的故障

【若溪】请两位看一下日志服务器的/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服务器的管理员权限,上周刚刚变更过。

新的管理员是:王总监。

路容的呼吸停了一拍。

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

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

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

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

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

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

她重新开始打字。

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

消息发送出去。

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

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

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

几秒钟后。

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

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

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

讨论组里沉默了几秒。

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

她继续打字。

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

这次,回复的是吴建国。 零零电子书

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

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

消息发送出去。

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

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

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

路容的手指停顿了一下。

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

她快速打字补救。

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

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

几秒钟后,周哲回复了。