$ Notes on Programming

一位后端工程师的学习笔记与踩坑记录

PostgreSQL 连接池参数调优实战

2025-03-20 · postgresperformance

最近线上出现 too many connections 报错,排查后发现是 SQLAlchemy 的 pool_size 设置过小,加上短连接泄漏导致连接被耗尽。

经验公式:pool_size = (核心数 × 2) + 磁盘队列数。实际我们把 pool_size 从 20 调到 50,max_overflow 从 10 调到 30,配合 pool_recycle=1800,问题解决。

Redis 缓存穿透的三种解法

2025-03-14 · rediscache

缓存穿透指的是请求一个缓存和数据库里都不存在的 key。解法一是缓存空值(设置较短 TTL);解法二是布隆过滤器;解法三是接口层参数校验。

我们生产环境用的是布隆过滤器 + 空值缓存组合,基本能挡住 99% 的恶意扫库请求。

Go 协程泄漏排查小结

2025-03-06 · golangdebug

上周线上服务内存缓慢上涨,pprof 看到 goroutine 数量从 200 涨到 20000+。最终定位到一个 time.After 在循环里使用导致的经典坑。

教训:循环里不要用 time.After,改用 time.NewTimer 并及时 Stop()