一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - Linux系統內存問題排查的“套路”你掌握了嗎?

Linux系統內存問題排查的“套路”你掌握了嗎?

2024-01-05 17:04未知服務器之家 Linux

最近一段時間有點忙,有段時間沒更新文章了,今天我們一起完成關于內存模塊的最后一塊拼圖,如何高效的找到Linux系統內存的問題。在前面我們講了內存的基本概念、內存映射、分配和回收、Page Cache、內存泄露相關的案例分析

Linux系統內存問題排查的“套路”你掌握了嗎?

最近一段時間有點忙,有段時間沒更新文章了,今天我們一起完成關于內存模塊的最后一塊拼圖,如何高效的找到Linux系統內存的問題。在前面我們講了內存的基本概念、內存映射、分配和回收、Page Cache、內存泄露相關的案例分析。感興趣的朋友們,可以回過頭翻閱查看。

內存性能指標

為了分析內存的性能瓶頸,首先你要知道,怎樣衡量內存的性能,也就是性能指標問題。這里又可以分別從整體內存使用情況和進程內存使用情況去觀察內存指標。

系統內存使用

Linux系統內存問題排查的“套路”你掌握了嗎?

Linux系統free命令輸出

  • Used&Free:已用內存和剩余內存很容易理解,就是已經使用和還未使用的內存。
  • Shared:共享內存是通過 tmpfs 實現的,所以它的大小也就是 tmpfs 使用的內存大小。tmpfs 其實也是一種特殊的緩存
  • Available:可用內存是新進程可以使用的最大內存,它包括剩余內存和可回收緩存
  • Buff緩沖區是對原始磁盤塊的臨時存儲,用來緩存將要寫入磁盤的數據。這樣,內核就可以把分散的寫集中起來,統一優化磁盤寫入。
  • Cache一部分是磁盤讀取文件的頁緩存,用來緩存從磁盤讀取的數據,可以加快以后再次訪問的速度。另一部分,則是Slab 分配器中的可回收內存。

進程內存使用

Linux系統內存問題排查的“套路”你掌握了嗎?

  • VIRT、VSZ虛擬內存,包括了進程代碼段、數據段、共享內存、已經申請的堆內存和已經換出的內存等。這里要注意,已經申請的內存,即使還沒有分配物理內存,也算作虛擬內存。
  • RES、RSS常駐內存是進程實際使用的物理內存,不過,它不包括Swap和共享內存。
  • SHR:共享內存,既包括與其他進程共同使用的真實的共享內存,還包括了加載的動態鏈接庫以及程序的代碼段等
  • Swap:是指通過 Swap 換出到磁盤的內存。
  • 缺頁異常:
  • Majflt主缺頁異常。需要磁盤I/O 介入(比如 Swap)來分配內存。主缺頁異常升高,那么內存訪問也會慢很多。
  • Minflt:次缺頁異常。直接從物理內存中分配內存。

這些內存的性能指標都需要我們熟記并且會用。我把它們匯總成了一個思維導圖供大家參考。

Linux系統內存問題排查的“套路”你掌握了嗎?

內存性能工具

我們知道了內存的性能指標后,我們還需要學會根據性能指標找工具(性能觀察命令),下面表格整理了內存性能指標和工具的關系。

Linux系統內存問題排查的“套路”你掌握了嗎?

分析內存性能瓶頸的排查套路

快速定位內存問題,可以先從整體內存使用情況入手,在觀察進程的內容使用情況,找出可疑進程后,在進一步分析進程的內存地址空間分布等等;在使用性能工具使用優先選覆蓋面大的工具,這樣可以同時觀察到多個指標。具體的步驟可以分成以下幾步:

  • 先用free和top,查看系統整體的內存使用情況。
  • 再用vmstat和pidstat,查看一段時間的趨勢,從而判斷出內存問題的類型。
  • 最后進行詳細分析:
  • pidstat觀測到可疑進程,可以繼續使用pmap觀察進程內存地址分配情況。
  • 可以使用內存分配分析工具memleak,檢查是否存在內存泄漏。

系統內存優化建議

  • 禁用Swap:如果必須開啟 Swap,降低 swappiness 的值,減少內存回收時 Swap 的使用傾向。
  • 減少內存的動態分配。比如,可以使用內存池、大頁(HugePage)等。
  • 盡量使用緩存和緩沖區來訪問數據。比如,可以使用堆棧明確聲明內存空間,來存儲需要緩存的數據;或者用 Redis 這類的外部緩存組件,優化數據的訪問。
  • 使用 cgroups 等方式限制進程的內存使用情況。這樣,可以確保系統內存不會被異常進程耗盡。通過 /proc/pid/oom_adj ,調整核心應用的 oom_score。這樣,可以保證即使內存緊張,核心應用也不會被 OOM 殺死。
  • 根據需要優化Linux內核中關于內存相關參數,一些核心參數如下。
  • vm.swappiness。
  • vm.overcommit_memory。
  • vm.dirty_ratio、vm.dirty_background_ratio。
  • vm.min_free_kbytes。
  • vm.drop_caches。

Linux系統內存問題排查的“套路”你掌握了嗎?

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片免费在线视频 | 好男人在线观看免费高清2019韩剧 | 色99视频 | 91tv在线| 小黄文污到你湿 | 欧美怡红院视频一区二区三区 | 福利视频一区二区牛牛 | xxxxxx国产精品视频 | 亚洲人成在线播放 | 视频在线观看大片 | 草莓视频在线观看免费 | 亚洲国产精品综合福利专区 | 亚洲黄网站wwwwww | 9久热这里只有精品视频在线观看 | 免费看a片毛片 | 久久精品观看影院2828 | 2021国产精品视频 | 午夜dj影院在线观看完整版 | 射西西| 猫咪maomiav永久网址 | 天天草b | 日本成年片高清在线观看 | 日韩欧美成末人一区二区三区 | 国产日韩一区二区三区在线播放 | 色中文| 免费精品在线视频 | 亚洲欧美日韩特级毛片 | 国产自一区 | 美女无内裤下部黄 | 性派对xxxhd 性欧美video | 国产免费看视频 | 特黄aa级毛片免费视频播放 | 青青青青青国产费线在线观看 | 北条麻妃黑人 | 白丝出水| s0e一923春菜花在线播放 | 成人影院www在线观看 | 午夜福利试看120秒体验区 | 亚洲区在线播放 | 国产网站免费在线观看 | 日韩欧美中文字幕出 |