[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-database-pool-outage-zh-CN":3,"blog-related-database-pool-outage-zh-CN":30,"blog-adjacent-database-pool-outage-zh-CN":64},{"id":4,"slug":5,"title":6,"excerpt":7,"content":8,"cover":9,"tone":10,"author":11,"publishedAt":12,"updatedAt":12,"readingMinutes":13,"featured":14,"tags":15,"category":19,"seoSettings":29},80,"database-pool-outage","上线故障复盘：一次数据库连接耗尽","系统在周一早上九点全面不可用，根因是一个没有被关闭的数据库连接。","\u003Cp>故障发生在业务最繁忙的时段。用户打开页面一直转圈，服务端日志显示大量超时。我们从网关一路排查到数据库，最后发现问题出在一段循环逻辑里。\u003C\u002Fp>\n\u003Ch2>故障链条\u003C\u002Fh2>\n\u003Cp>一段批量处理代码在循环里创建数据库连接，但没有关闭，连接池在二十分钟内被耗尽。\u003C\u002Fp>\n\u003Cp>连接池耗尽后，所有请求排队等待，超时时间设置为三十秒，用户侧表现为页面卡死。\u003C\u002Fp>\n\u003Cp>监控只采集了服务器 CPU 和内存，没有采集连接池使用率，因此没有告警。\u003C\u002Fp>\n\u003Ch2>修复与改进\u003C\u002Fh2>\n\u003Cp>当天改为复用同一个连接，并在代码审查中增加资源释放检查项。\u003C\u002Fp>\n\u003Cp>监控新增连接池活跃数、等待队列长度两项指标，设置百分之八十告警。\u003C\u002Fp>\n\u003Cp>超时时间从三十秒降到八秒，让用户更快看到错误提示，而不是长时间等待。\u003C\u002Fp>\n\u003Cp>故障复盘的重点不是找责任人，而是找到那条没有被监控覆盖的路径。补上它，同类问题就不会再来。\u003C\u002Fp>","","slate","佳益方圆团队","2026-06-15T11:10:00+08:00",1,false,[16,17,18],"复盘","故障","数据库",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},3,0,"project-retrospective","项目复盘","从 0 到 1 的真实项目记录，完整呈现问题、方案、踩坑经验与最终结果。","clipboard-check","blue","article",40,{},[31,42,53],{"id":32,"slug":33,"title":34,"excerpt":35,"content":9,"cover":9,"tone":36,"author":11,"publishedAt":37,"updatedAt":37,"readingMinutes":13,"featured":14,"tags":38,"category":41},70,"gov-project-acceptance","政务项目复盘：验收为什么拖了半年","功能早已上线，验收却迟迟没有完成。问题往往不在系统，而在文档、流程和沟通节奏。","indigo","2026-10-13T09:00:00+08:00",[16,39,40],"政务项目","验收",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":43,"slug":44,"title":45,"excerpt":46,"content":9,"cover":9,"tone":47,"author":11,"publishedAt":48,"updatedAt":48,"readingMinutes":13,"featured":14,"tags":49,"category":52},71,"mes-integration-retro","制造企业 MES 对接复盘","系统对接最难的部分不是接口，而是让两个部门对同一个字段达成一致。","cyan","2026-10-01T10:13:00+08:00",[16,50,51],"制造业","系统集成",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"id":54,"slug":55,"title":56,"excerpt":57,"content":9,"cover":9,"tone":58,"author":11,"publishedAt":59,"updatedAt":59,"readingMinutes":13,"featured":14,"tags":60,"category":63},72,"cross-border-site-retro","跨境独立站复盘：流量到了，转化没到","网站上线后广告投放正常，询盘却很少。复盘发现，问题集中在信任和填写成本上。","teal","2026-09-19T11:26:00+08:00",[16,61,62],"跨境","转化",{"id":20,"parentId":21,"slug":22,"name":23,"description":24,"icon":25,"cover":9,"tone":26,"kind":27,"sortOrder":28,"count":21},{"previous":65,"next":82},{"id":66,"slug":67,"title":68,"excerpt":69,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":70,"updatedAt":70,"readingMinutes":13,"featured":14,"tags":71,"category":75},60,"pricing-tiers-design","定价与套餐设计","套餐不是把功能随机分组，而是让客户能清楚判断自己属于哪一档。","2026-06-17T11:10:00+08:00",[72,73,74],"定价","商业化","产品",{"id":76,"parentId":21,"slug":77,"name":78,"description":79,"icon":80,"cover":9,"tone":26,"kind":27,"sortOrder":81,"count":21},2,"product-thinking","产品思维","需求分析、用户体验与产品设计方法论，以及从业务问题到产品方案的思考过程。","lightbulb",50,{"id":83,"slug":84,"title":85,"excerpt":86,"content":9,"cover":9,"tone":26,"author":11,"publishedAt":87,"updatedAt":87,"readingMinutes":13,"featured":14,"tags":88,"category":92},99,"when-to-pair","什么时候需要结对编程","结对很贵，两个人干一个人的活。所以只在特定的时候用。","2026-06-13T11:10:00+08:00",[89,90,91],"团队文化","结对编程","协作",{"id":93,"parentId":21,"slug":94,"name":95,"description":96,"icon":97,"cover":9,"tone":26,"kind":27,"sortOrder":98,"count":21},4,"team-culture","团队动态","公司活动、技术分享、团建与招聘文化，了解佳益方圆团队的日常。","users",30]