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