eric-ren

导航

谁吃了我的docker 内存--vpnkit

问题描述:

  win10 pro系统下安装的docker(18.03.1-ce),持续运行一段时间后(几小时-十几小时不等),会发现系统内存损耗严重,打开任务管理器发现进程vpnkit.exe程序吃掉了大部分的内存,如下图所示:

最终结果是系统内存近乎耗尽,程序开始出现卡顿现象。

问题分析:

  初步怀疑是docker 对于内存限制这没有做好,就尝试将最大内存调到比较低的水准,经过几番尝试,发现毫无效果,随后就怀疑vpnkit这玩意有bug,经过多方查证结论如下:

vpnkit是在裸Ethernet网络流量和MacOSX/Windows各自socket之间传输数据的网络库,其在进行TCP connection keep-alive 实现中有一个潜在的bug(资源释放问题),导致connection占用相当大的资源,尤其是如果不调用远程终端读取接收缓冲区情况下,持续积累的TCP堆栈将相当庞大。

解决办法:

  既然知道问题原因根源,就对vpnkit进行优化处理(相信不久将来官方新包中也会修复次问题),下边是最终的hot fix包:

https://pan.baidu.com/s/1uzZbKr37na0H_w4fTCE-4w

将docker 安装目录下/resources 目录下vpnkit.exe进行备份,然后用上边的hotfix包替换,重启docker 即可。

Note 此解决办法同样适用于mac系统相同问题,mac系统对应文件是vpnkit.tgz

 

posted on 2018-06-13 14:14  eric-ren  阅读(3498)  评论(1)    收藏  举报