第8章:深夜的故障 (第2/3页)
【周哲】什么模式?
路容切回远程支持系统,打开另一个命令行窗口。她输入一串命令,屏幕上的字符像流水一样滚动。她的眼睛快速扫过每一行输出,大脑像一台精密的处理器,过滤无关信息,提取关键数据。
故障表现很奇特。
数据库连接没有真正断开,而是被某种机制“挂起”了。查询请求进入等待队列,但队列的处理线程被占用,不是被其他任务占用,而是被……空循环占用了。
就像有一个人站在门口,不进去,也不离开,就堵在那里。
路容的手指再次敲击键盘。
【若溪】请两位看一下日志服务器的/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行。
消息发送出去。
路容等待的时候,端起桌上的水杯
(本章未完,请点击下一页继续阅读)