golang - goroutine leak

 Annie千寻_535 发布于 2022-10-26 08:50

描述

需求是开发一个golang binary周期性收集host上docker container的log信息。结果运行的时候使用go pprof查看发现goroutine泄露了。自己试了半天没有解决。

详情

  • 内存使用情况,内存会不断增加,一直到33m:

    CONTAINER           CPU %               MEM USAGE / LIMIT    MEM %               NET I/O             BLOCK I/O           PIDS
    goleak              0.00%               11.25 MiB / 32 MiB   35.14%              0 B / 0 B           6.112 MB / 0 B      0
  • pprof中结果:

    /debug/pprof/
    
    profiles:
    0    block
    63    goroutine
    0    heap
    7    threadcreate
    
    full goroutine stack dump

    由于debug期间个人对代码进行了优化,是个goroutine增加速度大大降低。最多的时候有3000个。

GitHub repo

goroutine-leak,使用govendor管理依赖包。
我把有问题的代码抽离出来放到main.go里,并且维护在了github上,地址goroutine-leak。里面默认集成了pprof功能,感兴趣的小伙伴可以一起debug学习下。

我也会不断尝试各种方法来解决这个问题。

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有