20年缓存工程师:建站资源优化,首屏快3倍、存储省70%
|
去年双十一前夜,我蹲在IDC三号机房角落啃冷掉的韭菜盒子——盒盖上印着“XX云2023年合作伙伴大会纪念”,油渍把“合作”俩字洇得只剩半个“合”。空调嘶嘶喘着,左边是老张在调BGP引流,右后方机柜顶灯闪得跟心电图似的,每闪三下,我就听见一声脆响:是王工又掰断了一根SSD卡扣。他掰第三根的时候,我说这事儿真不能怪他,PCIe通道映射表我亲手改过七遍,第七遍才让那台ECS认出自己的NVMe盘。 我原以为把CDN回源路径压到三层就够了,结果上线前两天,前端发来截图——首屏LCP从一千二百毫秒掉到三百九十毫秒,但TTFB没动,还是八十七。我盯着那个八十七看了十八秒,手抖着把Nginx里proxy_buffering关了,又开了stream_ssl_preread,顺手把lua_shared_dict里那个叫“cache_bloom”的64MB区域缩成18MB。不是为了省内存,是怕它跟旁边那个风控模块抢同一个memcg cgroup limit——守门多年的安全老邵上周刚在我工位隔壁吼:“你们缓存再吃满cgroup,下次WAF规则热加载直接OOM!” 对,就是老邵。他穿件洗得发灰的连帽衫,帽子一直没摘,右手食指在键盘上敲F5时会不自觉捻一下无名指指甲缝里的灰——那是上周拆过一台被挖矿固件覆盖的边界WAF硬件留下的。他看我缩shared_dict,头也不抬说:“你这省的是存储,不是带宽。”我说对,70%是实打实的,但没告诉他那70%里有四成来自干掉了二十三个重复的SVG Sprite Base64内联块——这些块全是三年前运营提需求时让埋的,现在页面一个都不用,可没人敢删,怕动了历史埋点。直到上季度末审计抽样扫到了其中三个,报了个中危“冗余资源暴露路径”,我才敢动刀。 那天下午五点零三分,窗外开始下雨。不是那种刷刷的雨,是南方梅雨季特有的、带着铁锈味的闷湿,水汽糊住机房玻璃窗,像蒙了层毛玻璃。我隔着窗看见楼下停车场,一辆银色帕萨特正反复倒车入库,倒了七次,最后一次撞上柱子橡胶条,发出沉闷的“噗”声。我数着那个“噗”声,突然想起这事:我们干缓存的,从来不是比谁命长,是比谁先死在别人优化完的旧配置里。首屏快3倍?是快,可快在哪?不是V8编译快,是DNS预热+HTTP/2优先级树+资源哈希去重三拳打在同一次TCP流里。但这仨玩意儿,任何一拳打歪,快就变卡顿——上个月A/B测试组硬把preload标签塞进async脚本里,导致浏览器解析时反复重排资源队列,LCP反而跳到一千六百毫秒。这个我敢打包票。 其实最烦的不是技术。是每次优化后都要陪业务方看监控。上回他们盯着Grafana面板上那个绿色下降箭头,嘴里念叨“真香”,左手却把新版本SDK包发给所有外包测试员,连同三十七个未归档的本地开发分支配置。我拉他们看缓存命中率曲线,有人指着拐点问:“这波抖动是不是攻击?”我还没答,老邵接电话,那边声音炸雷一样:“啥?登录接口被肉鸡池扫?你们缓存没做token绑定?”他捂住话筒冲我吼:“你管不管?”我说管啊,但我缓存不验token,那是你WAF的事。他“哦”了一声,挂了,转头又去撕一张打印纸——那纸上印着昨天刚过的等保2.0整改项清单,第三行写着“WAF策略误判率<0.3%,当前0.87%”,他拿笔在“0.87%”底下画了三道杠,墨水洇开,像三条小虫。 我原以为把public目录全扔进CDN并加immutable就完事了。结果发现nginx.conf里有一行注释:“# 临时兼容2021年旧版H5跳转(勿删)”,下面藏着一行if ($args ~ "from=app") { add_header Cache-Control "no-cache"; }。这行写了两年半,没人动过。删掉后,首屏快的那3倍里,有半倍是它还的债。至于存储省70%,其实是靠砍掉两套已弃用的JSON Schema校验缓存(一套用于2019年停运的积分商城,另一套用于更早的线下核销终端),还有……算了,这个我说不准。 说到_schema,前天运维小刘跑来找我:“哥,缓存穿透防护的布隆过滤器,能扛住千万级UID范围吗?”我没理他,反问他:“你们那个风控的实时用户画像服务,是不是还在用Redis GEO查半径三公里活跃设备?”他点头。我拉开抽屉,掏出一个U盘——里面存着半年前我在自己笔记本上跑的压测日志,文件名是“geo_vs_hll_20240321.log”,创建时间是凌晨两点十四分。我没给他看。就让他拿着U盘站那儿,听机房空调嗡嗡响,等雨水顺着窗框往下爬。后来他走了,U盘落我桌上没拿走。我也没动它。现在它就在桌角,插着USB口,指示灯一闪一闪,像在呼吸。
文章配图,仅供参考 对了,上周五验收报告签完字,产品老大拍我肩说:“老陈,下季度咱们搞AI推荐缓存预热。”我点点头,转身进茶水间泡面,泡到第二分钟,听见微波炉“叮”一声,抬头看见玻璃门倒影里自己左耳后有块没剃干净的胡茬。我拿指甲抠了一下,没抠下来。算了。先去把那台被老邵骂过三遍的边缘节点防火墙白名单加一条——允许它往本地缓存推送元数据,别再每次都跨省走中心集群了。这事今晚就得弄,明早七点,监控要看。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



