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限制确实满足不了使用需求。

 

posted @ 2022-03-11 10:43  星海寻梦233  阅读(4702)  评论(1编辑  收藏  举报