Golang高docker停泊时间在docker/ kubernets
我正在将使用AWS Elastic Beanstalk编写的Web应用程序迁移到Kubernets ,我发现在运行应用程序时,垃圾收集器暂停时间(我使用Newrelic来监视应用程序)增加了大约100。
我相信这跟Kubernet的CPU限制有关。
有没有人有什么想法是什么真的造成它? 有可能克服吗?
下面是这个区别的一个小例子。
Elastc豆茎:
Kubernets:
经过一些testing和更多的研究,我发现了一些有趣的事情 Docker的CPU限制似乎对GC时间/暂停有很大的影响。 经过一些testing,我得到的CPU限制为500m
,这意味着一个8核心机器的1/2 CPU。
我设置GOMAXPROCS = 1
和GOGC = 1000
,这导致更less和更快的GC暂停,但平均内存使用增加。
以下是Kubernets和Elastic Beanstalk的概述
Kubernetes:
Elastic Beanstalk: