(文中图片摘自互联网,如有侵犯您的版权,请及时联系我们,本公众号将在第一时间给予删除。)
本文适合以下读者阅读:
Site Reliability / Infrastructure Engineer
System Administrator / Developer
Build / CI/CD Engineer
对Monitoring有兴趣,且对Linux和Docker有一定了解的Software Engineer
正文
在Docker生态环境中,对container内存试用的侦测可谓是至关重要。在默认情况下,container有权限使用服务器上任何大小的内存空间。这样,操作系统内核就非常容易抛出内存溢出的异常(Out of Memory Exception)。
所以,提前设定container内存的hard与soft limit能非常好地避免这样的情况,这也是目前主流的container orchestration平台所采用的方法。这两个值分别可以使用docker run的--memory和--menory-reservation命令行选项来进行设置。
然后,选择一个合适的值需要一定时间的侦测数据及曲线。在系统中,我们需要侦测container所使用的resident set size(RSS)内存大小,并观察调整其数值,使其介于soft与hard limit之间,这样才能最大化利用服务器或服务器集群的内存资源,且防止发生内存溢出的现象。过多分配内存上限会增加服务器集训成本,即你需要更多的服务器来运行相同数量的container。反之,过少分配,可能会造成container经常触发内存异常从而被内核终结。
侦测container内存使用的另一个好处就是能更好的发现内存泄露,这点与传统程序侦测一样,就不过多赘述了。
最后,谢谢大家的时间,如果有任何意见或者建议,请随时在公众号下给我留言。
领取专属 10元无门槛券
私享最新 技术干货