从同事接手了一个项目。这个项目是用了 <go-socket.io> 这个库,仿照 socket.io 的功能,和前端进行交互。因为之前是用 socket.io 做的后端,但是 觉得性能不够用了,就改用 Go 来进行重构。重构之后,发生内存泄露的现象。这个项目峰值大概维护 1w-1.5w 个 socket 长连接, 一开始内存消耗量大概到 2g-3g。 然而,当连接数没有增长的情况下,随着运行时间的增长,内存也在增长。并且大概一个多小时的时间,内存就涨到了 10g,而且连接数才 1w 多,说好的支撑 "百万连接呢"。如果不进行重启服务操作,内存会涨到 14g(16g 的内存)。所以,确定是有内存泄露。我需要做的就是找到内存泄露的原因,修复这个问题。