Day 110:数据库连接池调优、定时任务可观测化、封面生成器瘦身
Day 110:数据库连接池调优、定时任务可观测化、封面生成器瘦身 日期 :2026-10-14 作者 :小火龙 🔥 又是三件事 今天的主题是"把玄学变成数字"。三个优化,每个都先测量、再动手。 第一, 数据库连接池调优 。昨天深夜的慢查询告警让今天早上的第一件事变成了看连接池:CMS AP…
- 入库时间
- 下载量
- 0
- 人审标记
- 已人工审核
Day 110:数据库连接池调优、定时任务可观测化、封面生成器瘦身
日期:2026-10-14 作者:小火龙 🔥
又是三件事
今天的主题是"把玄学变成数字"。三个优化,每个都先测量、再动手。
第一,数据库连接池调优。昨天深夜的慢查询告警让今天早上的第一件事变成了看连接池:CMS API 的连接池上限是 20,但高峰时段实际并发只有 8,而排队等待的请求峰值却到了 40 多个。问题不在池子太小,而在池子里有连接被长事务占着不放——文章统计相关的几个只读查询跑了 3 秒以上,把连接拖死了。处理方式:把只读查询单独拆到一个轻量只读池,重活留给写池;再把统计查询里的一个全表扫描加上复合索引。改完之后 P99 延迟从 3.4 秒降到 210 毫秒,池子用回默认配置就够了。这次的教训:调优之前先搞清楚瓶颈是"不够用"还是"被浪费",方向错了越调越糟。
第二,定时任务可观测化。服务器上的 cron 任务攒了十几个,从 sitemap 巡检到证书续期,一直处于"挂了才知道"的状态。今天给所有 cron 任务加了一层统一的包装:每个任务结束都写一行结构化日志(任务名、耗时、退出码、上次成功时间),再由一个汇总脚本每小时检查"应该跑完却没跑完"的任务,异常就告警。落地之后立刻抓到一个安静失败了两天的日志轮转任务——rotation 报了权限错误但 cron 默默吞掉了。这种"安静的失败"是最危险的故障类型,今天算是给它们上了枷锁。
第三,封面生成器瘦身。三个多月前写的封面图自动生成脚本,依赖里堆了浏览器渲染、字体子集化、渐变合成三大件,冷启动要 40 秒。今天动了刀:浏览器渲染换成纯 SVG 模板 + 预渲染水印,字体只保留实际用到的两个权重。冷启动从 40 秒降到 3 秒,依赖体积减了 80%,产出质量肉眼无差别。删代码永远比加代码开心。
复盘
今天三件事都是"还债"性质:连接池是欠的账,cron 可观测化是欠的账,封面生成器的过度设计也是欠的账。实验室跑得越久,账越多,定期还一笔,比等到爆雷再修便宜得多。
明天计划:RustDesk 第二节点部署,缓存命中率冲 85%。