docker容器增加内存


现象:

  • 在运行docker容器的时候,当运行多个容器,或者其中一个容器占用内存比较大的时候,另一个容器中的任务会挂掉。
  • 比如某一个容器同时运行 Hadoop + Hive,另一个容器运行 Mysql ,就会导致Mysql容器自动挂掉.

 

排查原因:

  • 使用:docker stats 查看容器动态资源使用情况时,如下:

             

  可以看到,h01表示Hadoop的master节点,且这个容器中还安装、运行着 Hive,占用内存为: 1.347G/1.939G,且Mysql也占用了一些内存,他们是共享这2G的内存的,已经接近最大内存上限了。

            

 

   如上图,可以看到频繁的进行内存交换,资源释放。

 

解决办法:

  • 这是由于电脑分配给 Docker的内存太少了,默认是分配 2G的内存给 Docker,需要将电脑分配给Docker的内存设置更大一点。
  • 先将 docker中运行的容器都停掉 :docker stop container_id
  • docker -> Dashboard -> Settings -> Resources

            

 

  如上图所示,将 Memory 调为 4G,将Swap 调为 2G,点击 Apply & Restart即可。

  • 重启之后,看到docker容器的资源如下:

            

 

   可见,最大内存已经变为 3.84G了。

 

反馈结果:

  • 当设置后,再启动 Hadoop 、Hive 、Mysql后,能正常运行Hive程序,且资源使用情况如下:

            

 

   可见,容器的内存使用超出 2G了,之前的 2G限制确实满足不了使用需求。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM