go tcp服务内存泄露排查

2021-08-30  本文已影响0人  七剑演武堂

目前在一家安全公司任职架构师,刚上任就赶上了压测,并且暴露了服务器出现内存泄露问题,表现为tcp连接增加时,内存稳步增长;tcp链接断开,服务器内存不释放。

程序是由go语言编写的,go是由gc的,说明内存溢出的原因一定是因为某个分配在堆上的全局变量导致的。

根据原因,推测该变量与维护tcp连接有关,经查找确认了和client有关的三个map。

对此,针对于该三个map添加和移除进行对应的日志打印,发现了代码中两处异常处理未闭环,导致对应的map没有正确释放元素。

上一篇 下一篇

猜你喜欢

热点阅读