时候,心里已经有了百分之百的把握。
变化不仅仅发生在小周一个人身上。
第十二天的傍晚,小张在连续盯着屏幕调试了六个小时之后,突然从工位上站了起来,椅子的滚轮在地面上划出一道尖锐的声响。他站起来的动作太猛,把旁边正在喝红牛的小李吓了一跳,差点把易拉罐里的液体洒在键盘上。
“找到了。”小张的声音沙哑得像是砂纸刮过金属表面,但每个字都带着一种压抑不住的颤抖,“那个导致一万并发时CPU飙升到九成的罪魁祸首,我找到了。”
他指着屏幕上高亮标黄的三行代码,手指几乎要戳进显示器里去。围过来的几个人凑近了看,然后面面相觑——那三行代码看起来太正常了,正常到他们之前做代码审查的时候从来没有怀疑过它。一个标准的线程池初始化函数,传入参数是CPU核心数减一,没有任何语法错误,逻辑上也完全符合常规做法。
“线程数分配有问题。”小张把代码注释掉,重新写了几行,语速快得像连珠炮,“我们之前一直按照物理核心数减一来分配线程池,这个逻辑在单机跑测试的时候没问题,但一旦上到并发压测环境,虚拟化层会对线程进行额外调度,导致线程池里的工作线程和系统调度线程互相抢占时间片。表面上代码在跑,实际上有一半的CPU周期都被浪费在线程切换上了。改成用逻辑核心数,翻个倍,再给异步协程单独预留两个线程做上下文切换——就改这三行代码,一万并发压测的时候CPU占用率能降一半。”
小张说完的时候,手指已经敲完了重构的代码。
打包、编译、启动压测,一气呵成。
监控面板上的CPU曲线从之前的持续高位运行平滑地降了下来,稳定在不到一半的位置,像是被人用手指轻轻摁住了一样安静。
小李盯着那条曲线看了足足十五秒,然后低下头,在自己的工作笔记上认真地记了一笔:“2026年7月6日,小张发现线程池配置错误,一万并发CPU占用率从百分之九十降到了百分之四十五。”写完之后他在这一条的末尾画了一个五角星——这是他们团队内部约定俗成的标记,表示这
本章未完,请点击下一页继续阅读!