这个系列第五篇,感觉坑越来越浅了,不过还算新鲜,将就着下饭吧。
- 1 -
那是一个月以前,一个令人愉快的周五晚上,我在收工前扫了一眼监控看板,看到了点不太好的迹象:
稍微解释一下,图中骚动的绿线表示 Goroutine 的数量,密集的红色竖线表示发布了新版的时间点。
因为26和27号下午照常发车,所以 Goroutine 的数量下降了;而28号 值班同学偷懒 没有需要发布的commit,于是 Goroutine 数量一路上涨,眼看就要冲破方框。
我心想:这走势要是我买的510500该多好啊 糟了,这铁定是 Goroutine 泄漏了,那我还收不收工了?
经过一番思考,头脑里的勤奋小人打败了懒惰小人,指挥我把问题抛给了当天值班的 H 同学,然后愉快地去健身房了。
毕竟 Goroutine 泄漏排查起来应该不会很困难,按套路用 pprof dump 两份采样数据、然后用 --base 比较一下,就该结案了吧。
- 2 -
然后 H 同学用 pprof 确实看到了泄漏的 2498 个 goroutine:
(不是我没截全,是真的只有一行stack)
但问题是这些 goroutine 的 stack 过于简单了 —— 这 http.(*persis