qiniu / goc

A Comprehensive Coverage Testing System for The Go Programming Language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

v2 版本,连接接受接受缓冲区一直增大,导致OOM

wangjielalala opened this issue · comments

image
netstat -nltp,关注第二列

image

各位大佬帮忙定位一下,我定位是这块代码的问题
image

cmd 命令是: ./gocv2 server

可能是bug,欢迎提交PR

  1. netstat 显示的 send-q, recv-q 属于 tcpip 协议栈,和进程内存没有关系。有堆积说明进程未 recv
  2. 你 rss kill 时好像才 <200M?是不是内存给小了
  3. 我这边有长时间运行的 goc server < 50M,给一下使用场景/网络情况/agent 规模

1、第一个问题是确实和进程内存没关系,但是如果连接缓存有堆积,导致系统内存增大,导致OOM,同时也解释了第二个问题,虚机内存资源确实紧张,但是不是根本原因,根本原因是有 业务代码收包逻辑有bug,导致连接缓存堆积
2、使用场景是 我们的容器服务会注册到注册中心,过程中会发起获取覆盖率请求和心跳请求
网络情况: 抓包有堆积连接5分钟显示 心跳包正常,排除心跳逻辑有问题, 网卡没有出现异常包和丢包现象,但是运行大概一周后就会被OOM,期间 连接缓存一直增大
agent规模: 同时在线establish 连接是 180 - 200,范围之间

还有补充一点是, 并不是所有 establish 连接 都有堆积问题,只有 大概只有 5%的连接会有这种问题