golang - goroutine 洩漏
为情所困
为情所困 2017-04-26 09:01:29
0
0
816

描述

需求是開發一個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學習下。

我也會不斷嘗試各種方法來解決這個問題。

为情所困
为情所困

全部回覆(0)
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!