十一点半了,屏幕还亮得刺眼。浏览器里卡着七八个标签页。工作群“叮”一下,微信里又躺着三条未读。冰箱里的牛奶快过期了,我差点忘了这茬。整个人往椅背上一瘫,颈椎“咔哒”一声。嘿,这架势,跟一台同时扛着几十个请求的服务器有啥区别?一个个全在死命撑着“在线”。怕漏回调,怕手慢半拍导致链路崩盘。去他的优雅降级吧。这会儿能保住心跳不飙到一百二,就算赢麻了。

前阵子收拾书架,顺手抽出一本旧书,《DB2 UDB v8.1 for Linux UNIX Windows数据库管理》。书页脆得掉渣,一翻开,霉味直往鼻子里钻。里头全是并发控制、事务管理这些硬骨头。咋整?好几拨人同时读写还不打架,锁到底设多大?真撞车了,是让某些进程乖乖排队,还是直接回滚?作者那笔调,冷冰冰的,全是在给机器立规矩。当年我光顾着死磕那些术语,现在再翻,倒被一句大实话给戳中了。系统不乱套,真不是靠所有任务齐头并进。人家清楚得很,什么时候该歇会儿,什么时候该松手。嗯,大概就是这么个理儿。

说真的,咱们过日子,好像也染上了这“高并发”的毛病。日程表排得密不透风。人脉得顾,项目得卡点交。连周末喘口气,都得提前盘算好“充电效率”。逼着自己砌了道严丝合缝的索引墙,生怕在人生的查询里捞不着最优解。可日子哪是关系型数据库啊?它不承诺原子性,也不保隔离性。报告刚发出去,电话就炸了。正打算陪陪家人,脑子里又蹦出封没回的邮件。事儿一件摞一件,最后谁也没踏实做完。全卡在同一个事务里,互相干等着锁释放。我总觉得,很多人跟我一样,以为日程排满了,生活就能攥在手里。现实呢?打脸最响。

讲真,我以前特较劲。总觉得只要调度得法,总能卡进那个完美的并发窗口。后来才咂摸出味儿来。人不是铁打的机器,内存早就爆满了。那些死死攥在手里的“事务”,好多早该超时踢出去了。硬扛?系统只会越来越卡。书里提过一种“乐观锁”。听着挺玄乎,其实就是默认没事,真到提交那一刻才核对。撞了车怎么办?要么重试,要么干脆认栽。过日子,或许也得留点这种“不硬刚”的余地。这招挺适合咱们普通人。不是每件事非得秒回。不是每个决定,都得一次命中。让几个请求在队列里多待会儿。允许某些连接主动断掉。反倒能喘口气。毕竟,强行维持高可用,代价是什么?把自己熬成备用节点罢了。

昨天挪书桌,翻出张去年的年度计划。纸都泛黄了。上面密密麻麻列着要读的书、要去的城市、要见的人。好多字现在瞅着都发虚。那时候我肯定信了邪。以为参数设对了,人生就能跑出预期结果。可时间压根不按咱们写的SQL走。它有自个儿的执行计划。慢的时候,真能让人抓狂。有时候直接报错罢工。有时候呢?又突然顺溜地跑通一段压根没写过的代码。咱们总想攥紧方向盘。却忘了,光盯着仪表盘看,本身也费油。生活本来就是个黑盒测试。越想精确控制,越容易触发未知异常。未必非得事事都跑满全核。

屏幕右下角的时间跳到了十二点。提示音总算消停了。我扣上电脑,起身去厨房倒水。窗外的路灯还亮着。活像一台没人管的老服务器,大半夜自己转着风扇。也许咱们这辈子,也学不会把生活调成绝对稳定的状态。能偶尔接住一次死锁。能坦然看着某个进程自己结束。嗯,大概就算活得挺明白的了。