成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Docker和容器內進程內存計算差別

存儲 存儲軟件
生產環境上了大規模容器集群后,肯定需要對容器進行監控,容器的編排我們采用了Kubernetes,監控前期采用了Weave Scope,后期采用了cAdvisor+Heapster+InfluxDB的方案,剛開始監控感覺并沒有什么異常,但是集群運行久了之后,發現監控的指標和預想的并不一樣。

 生產環境上了大規模容器集群后,肯定需要對容器進行監控,容器的編排我們采用了Kubernetes,監控前期采用了Weave Scope,后期采用了cAdvisor+Heapster+InfluxDB的方案,剛開始監控感覺并沒有什么異常,但是集群運行久了之后,發現監控的指標和預想的并不一樣。

我們有對應的Java應用跑在容器中,每個Container的資源限制了4C16G(看起來和虛機一樣夸張),JVM設置了Xmx2G的限制,但是發現有些容器的內存使用率一直在16G左,完全沒有釋放出來。Weave Scope和Heapster監控采集到的指標都是一樣的,但是實際登錄容器后發現JVM才用了800M不到。Weave Scope上其實可看到container和container內process的內存消耗,這個和實際登錄容器看到的是一樣的結果,如下圖(剩余的那些sleep等進程其實占內存很少,忽略不計)

[[236276]]

我們可以用docker stats查看對應容器的資源消耗,看到內存使用率在16G左,如下圖

其實容器內部就是Linux對于內存的計算方式,我Baidu了一下發現Linux和Docker對于容器內存的計算是有差異的,Linux中buffer/cache是不計算進used memory的,所以下圖中total=free+used+buff/cache,free命令的數據來源于/proc/meminfo

Docker本身的內存要通過cgroup文件中相關數據計算,我們進入對應容器的cgroup目錄中,我們的容器以Pod為最小單位運行在Kubernetes環境中,所以路徑在/sys/fs/cgroup/memory/kubepods下,后面跟著Pod的***標識和container的***標志

  1. /sys/fs/cgroup/memory/kubepods/pod2534673f-68bd-11e8-9fff-325ce3dddf77/245ac9f74c34b666ba14fadab30ef51c0f6259324b4b2f100e9b6b732b4c0933 

在該目錄中有一個memory.limit_in_bytes文件,這個就是Kubernetes的YAML文件通過resource.limit將值傳遞給Docker API下發的內存限制,cat查看為17179869184,單位Byte,轉換后剛好為16G;然后我們看到有一個memory.usage_in_bytes,為當前容器的內存使用量,cat查看為17179824128,轉換后15.9999G,Docker的原生監控,就是我們在用的這些Weave Scope和Heapster其實都是查詢這個memory.usage_in_bytes的值;那么我們怎么推算出實際容器中應用消耗的內存總量呢,我們需要查看該目錄下的memory.stat文件,cat看到如下內容

  1. [root@docker 245ac9f74c34b666ba14fadab30ef51c0f6259324b4b2f100e9b6b732b4c0933]# cat memory.stat 
  2.  
  3. cache 15749447680 
  4. rss 817262592 
  5. rss_huge 715128832 
  6. mapped_file 3653632 
  7. swap 0 
  8. pgpgin 59308038 
  9. pgpgout 55485716 
  10. pgfault 97852409 
  11. pgmajfault 1048 
  12. inactive_anon 0 
  13. active_anon 817238016 
  14. inactive_file 7932751872 
  15. active_file 7816630272 
  16. unevictable 0 
  17. hierarchical_memory_limit 17179869184 
  18. hierarchical_memsw_limit 34359738368 
  19. total_cache 15749447680 
  20. total_rss 817262592 
  21. total_rss_huge 715128832 
  22. total_mapped_file 3653632 
  23. total_swap 0 
  24. total_pgpgin 59308038 
  25. total_pgpgout 55485716 
  26. total_pgfault 97852409 
  27. total_pgmajfault 1048 
  28. total_inactive_anon 0 
  29. total_active_anon 817238016 
  30. total_inactive_file 7932751872 
  31. total_active_file 7816630272 
  32. total_unevictable 0 

對其中常用項的解釋如下表

實際Container中實際內存使用量real_used =memory.usage_in_bytes - (rss + active_file + inactive_file),但是一個resource.limit為16G的Container,JVM應用只是用了幾百兆,但監控查到使用了16G,多出的15G用在哪里。我們查詢了InfluxDB數據庫,拉出了Pod的監控歷史,發現有一個時間點,內存使用率從16G一下子掉到了11G,并且在1分鐘后上升到了16G,此時間點通過工作記錄發現是有清容器日志的操作,應用將日志通過文件的形式寫在宿主機的文件系統中,我們找了測試環境嘗試,將一個內存消耗為7G的Container的5G日志清掉,docker stats可以看到Container的內存使用率一下子掉到了4G,并且active_file和inactive_flie都有大幅度的下降,這里為什么清了日志內存使用率只掉到4G,因為我們還有其他的寫文件日志沒有清,以及Container本身輸出在Stdout的json.log。這樣的高內存使用率長達1周,但是我們發現并沒有讓容器因為OOM(Out-Of-Memory)而退出,推算出容器中的Cache其實會根據實際的內存分配量而使用,并不像程序為超額使用導致容器OOM退出。

責任編輯:武曉燕 來源: 瀟灑的云世界
相關推薦

2020-10-22 13:49:37

Docker容器僵死進程

2016-01-11 10:29:36

Docker容器容器技術

2023-08-29 10:50:25

2023-09-01 11:34:41

2019-07-16 14:44:52

DockerMySQL操作系統

2010-02-04 09:26:34

Linux vmsta

2022-01-10 17:41:31

內存結構PostgreSQL

2018-10-12 11:11:39

Oracle內存結構

2019-12-24 08:49:06

容器Docker網絡

2015-03-26 17:13:17

云計算數據中心IDC

2017-03-20 14:51:33

2023-09-15 10:15:43

Docker網絡

2020-01-09 15:28:30

KubernetesDocker:容器

2018-06-26 15:58:39

進程內緩存緩存數據

2011-05-20 15:38:37

SAPDELL云計算

2020-07-16 07:52:09

Docker容器數據庫

2015-02-13 10:21:11

dockerubuntu解決方案

2016-10-08 15:42:02

ElasticsearcAdvisorDocke

2019-11-25 11:12:18

企業應用軟件容器操作系統

2017-11-28 09:21:53

LinuxWindowsDocker
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91在线观看视频 | 亚洲精品视频在线播放 | 91高清视频在线观看 | 在线成人一区 | 中文字幕在线看人 | 中文字幕第十页 | 国产日韩欧美中文字幕 | 中文字幕在线剧情 | 国产aa | 日韩欧美视频免费在线观看 | 精品久久一区 | 蜜桃视频一区二区三区 | 中文字幕日韩av | 国产在线精品一区二区三区 | 久久综合亚洲 | 激情视频网站 | 在线观看成人小视频 | 精品久久不卡 | 99精品视频在线 | 国产高清视频 | 欧洲亚洲精品久久久久 | 97日日碰人人模人人澡分享吧 | 亚洲精品在线播放 | 国产99视频精品免费播放照片 | 国产精品久久亚洲7777 | 国产精品成人一区二区三区 | 男女爱爱网站 | 国产精品中文字幕一区二区三区 | 国产福利资源在线 | 欧美国产日韩成人 | 欧美国产视频一区二区 | 就操在线| 国产在线观看一区二区 | 国产在线第一页 | 成人免费网站 | 97成人在线 | 9久久婷婷国产综合精品性色 | 热久久999 | 欧美激情精品久久久久久变态 | www.国产.com | 亚洲高清视频在线观看 |