最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

服務(wù)器內(nèi)存排查之free、vmstat、sar命令實(shí)戰(zhàn)教程

 更新時間:2025年11月07日 17:17:46   作者:程序員1970  
這篇文章主要介紹了服務(wù)器內(nèi)存排查之free、vmstat、sar命令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在Linux服務(wù)器的運(yùn)維場景中,程序突然卡頓且無日志報錯、CPU未跑滿的情況時有發(fā)生,此時內(nèi)存問題往往是潛在的“罪魁禍?zhǔn)?rdquo;。對于開發(fā)運(yùn)維人員而言,掌握free、vmstat、sar這三個命令,就如同為服務(wù)器配備了專業(yè)的“體檢工具”,能夠在短短幾分鐘內(nèi)精準(zhǔn)定位內(nèi)存相關(guān)的故障根源,為高效解決問題提供有力支持。

一、內(nèi)存排查的必要性

當(dāng)內(nèi)存容量充足時,程序能夠順暢運(yùn)行;然而,一旦內(nèi)存不足,便會引發(fā)一系列問題。一方面,程序可能因無法獲取足夠的內(nèi)存空間而崩潰;另一方面,系統(tǒng)不得不借助磁盤的“備用倉庫”(即swap分區(qū))來存儲和讀取數(shù)據(jù)。但磁盤的讀寫速度相較于內(nèi)存而言,慢了100倍以上,這種速度差異必然導(dǎo)致程序出現(xiàn)明顯的卡頓現(xiàn)象,嚴(yán)重影響服務(wù)器的性能和用戶體驗(yàn)。

二、free命令:內(nèi)存排查的“入門利器”

free命令堪稱內(nèi)存排查領(lǐng)域的“入門款”工具,它能夠快速提供關(guān)于內(nèi)存使用情況的基本信息,讓用戶迅速了解服務(wù)器的內(nèi)存狀態(tài)。

(一)簡單操作與靈活參數(shù)

在Linux終端中,只需輸入“free”命令,即可查看內(nèi)存的初始狀態(tài)。若希望結(jié)果以更人性化的GB/MB為單位顯示,避免記憶KB數(shù)值的繁瑣,可添加“-h”參數(shù);若想實(shí)現(xiàn)每隔一定時間(如3秒)自動刷新內(nèi)存信息,可添加“-s 3”參數(shù)。具體命令如下:

free -h -s 3

(二)結(jié)果解讀:洞察內(nèi)存“收支”

free命令輸出的結(jié)果包含多個核心字段,每個字段都如同倉庫的“收支數(shù)據(jù)”,反映了內(nèi)存的不同使用情況:

  • Mem(物理內(nèi)存主倉庫):這是程序最常用的內(nèi)存空間,類似于實(shí)際工作中的主要工作區(qū)域。
    • total:表示主倉庫的總?cè)萘浚?.9GB,反映了服務(wù)器物理內(nèi)存的總量。
    • used:顯示已使用的內(nèi)存容量,如298MB,體現(xiàn)了當(dāng)前正在被程序占用的內(nèi)存大小。
    • free:代表完全未被使用的“空倉庫”容量,例如814MB。但需要注意的是,這個值并非真正可用的內(nèi)存,因?yàn)檫€需要考慮緩沖和緩存所占用的空間。
    • buff/cache(臨時存儲區(qū)):這部分內(nèi)存類似于倉庫的“暫存架”,用于臨時存儲數(shù)據(jù)。
      • buff(緩沖區(qū)):剛從磁盤接收的數(shù)據(jù)會先存放在這里進(jìn)行整理,類似于快遞站的“待分揀區(qū)”。例如,剛下載的文件碎片會暫時存儲在緩沖區(qū),等待進(jìn)一步處理。
      • cache(緩存區(qū)):頻繁訪問的文件或數(shù)據(jù)會被存放在這里,以便快速調(diào)用,類似于家里的“常用物品柜”。例如,常用的程序代碼會被緩存在此,提高程序運(yùn)行效率。
    • available(真正可用內(nèi)存):這是最為關(guān)鍵的指標(biāo),其值大約等于free + buff/cache,例如1.6GB。當(dāng)這個值低于total的10%時,就表明內(nèi)存已經(jīng)接近耗盡,需要及時采取措施。
  • Swap(內(nèi)存?zhèn)溆脗}庫):這是磁盤上劃分的專門空間,作為內(nèi)存的備用區(qū)域。只有當(dāng)主倉庫(物理內(nèi)存)滿載時,系統(tǒng)才會使用Swap分區(qū)。但由于磁盤速度遠(yuǎn)慢于內(nèi)存,使用Swap分區(qū)會導(dǎo)致性能下降。

(三)實(shí)際場景應(yīng)用:快速判斷內(nèi)存狀況

通過free命令,運(yùn)維人員可以在10秒內(nèi)快速判斷內(nèi)存是否充足。例如,當(dāng)使用“free -h”命令查看結(jié)果時,如果發(fā)現(xiàn)available值只有100MB(而總內(nèi)存為1.9GB),這就表明內(nèi)存已經(jīng)非常緊張,可能需要清理緩存或考慮升級內(nèi)存。另外,如果Swap的used值大于0,并且持續(xù)增加,這說明主倉庫的內(nèi)存已經(jīng)不夠用,系統(tǒng)開始頻繁使用備用倉庫,此時必須盡快排查原因,避免問題進(jìn)一步惡化。

三、vmstat命令:內(nèi)存+CPU+IO的“全面體檢專家”

vmstat命令猶如服務(wù)器的“全面體檢報告”,它不僅能夠提供內(nèi)存的使用情況,還能同時監(jiān)測CPU和IO的狀態(tài),是Linux運(yùn)維領(lǐng)域中備受推崇的“明星命令”。

(一)使用方法:定期統(tǒng)計,精準(zhǔn)把握

在終端中輸入“vmstat”命令,默認(rèn)會統(tǒng)計一次當(dāng)前的系統(tǒng)狀態(tài)。若希望實(shí)現(xiàn)定期統(tǒng)計,例如每隔5秒統(tǒng)計一次,共統(tǒng)計3次,可使用以下命令:

vmstat 5 3

其中,第一個數(shù)字“5”表示統(tǒng)計間隔(秒),第二個數(shù)字“3”表示統(tǒng)計次數(shù)。通過定期統(tǒng)計,可以更準(zhǔn)確地觀察系統(tǒng)性能的變化趨勢。

(二)結(jié)果解讀:按模塊剖析性能維度

vmstat的輸出字段較多,但按照不同的性能維度進(jìn)行模塊劃分后,理解起來就變得相對簡單。

  • procs(進(jìn)程排隊情況)
    • r:表示正在運(yùn)行以及等待CPU的進(jìn)程數(shù)。如果這個數(shù)值長期大于服務(wù)器的CPU核心數(shù)(例如,服務(wù)器為4核CPU,而r長期大于4),則說明CPU資源不足,進(jìn)程需要排隊等待處理。
    • b:代表等待資源的進(jìn)程數(shù),這些資源可能包括內(nèi)存、磁盤IO等。如果這個數(shù)值大于0,說明有進(jìn)程因?yàn)橘Y源不足而“卡殼”,無法正常執(zhí)行。
  • memory(內(nèi)存主倉庫+備用倉庫)
    • swpd:顯示備用倉庫(Swap)已經(jīng)使用的空間大?。▎挝唬篕B)。如果這個數(shù)值大于0,說明主倉庫的內(nèi)存已經(jīng)不夠用,系統(tǒng)開始使用備用倉庫。如果swpd長期大于0且持續(xù)增加,就需要考慮升級內(nèi)存或者終止一些無用的進(jìn)程。
    • free:表示主倉庫的空閑內(nèi)存容量。
    • buff:緩沖區(qū)容量,類似于數(shù)據(jù)整理的“待分揀區(qū)”。
    • cache:緩存區(qū)容量,類似于存放常用物品的“常用物品柜”。如果cache的值非常大,而io中的bi值比較小,說明文件系統(tǒng)的緩存效率較高,能夠有效地減少磁盤IO操作。
  • swap(備用倉庫存取速度)
    • si:每秒從備用倉庫(磁盤)讀入內(nèi)存的數(shù)據(jù)量(單位:KB),即從備用倉庫往主倉庫運(yùn)輸數(shù)據(jù)。
    • so:每秒從內(nèi)存寫入備用倉庫的數(shù)據(jù)量(單位:KB),即主倉庫放不下數(shù)據(jù)時,往備用倉庫運(yùn)輸數(shù)據(jù)。正常情況下,si和so的值都應(yīng)該為0。如果這兩個值長期大于0(例如持續(xù)5分鐘都有數(shù)值),說明主倉庫的內(nèi)存嚴(yán)重不足,必須采取措施解決,如升級內(nèi)存或檢查是否存在內(nèi)存泄漏問題。
  • io(磁盤讀寫速度)
    • bi:每秒從磁盤讀入的數(shù)據(jù)量(單位:KB)。
    • bo:每秒寫入磁盤的數(shù)據(jù)量(單位:KB)。如果bi + bo的值很大,并且后面的wa(IO等待CPU時間)大于20%,說明磁盤IO成為了系統(tǒng)的瓶頸,即使內(nèi)存容量足夠,也會導(dǎo)致系統(tǒng)出現(xiàn)卡頓現(xiàn)象。
  • system(系統(tǒng)內(nèi)核消耗的CPU)
    • in:表示某一時間間隔內(nèi)觀測到的每秒設(shè)備終端數(shù)。
    • cs:表示每秒產(chǎn)生的上下文切換次數(shù)。這個值越小越好,如果值過大,說明CPU大部分時間浪費(fèi)在上下文切換上,沒有得到充分利用。此時,需要考慮調(diào)低線程或者進(jìn)程的數(shù)目,以提高CPU的使用效率。需要注意的是,in和cs的值越大,由內(nèi)核消耗的CPU就越多。
  • CPU(CPU干活情況)
    • us:用戶程序使用的CPU時間占比,例如訂單系統(tǒng)、網(wǎng)頁服務(wù)等業(yè)務(wù)程序。如果這個值長期大于50%,說明用戶程序?qū)PU的占用過高,可能需要優(yōu)化程序或算法。
    • sy:系統(tǒng)內(nèi)核使用的CPU時間占比,例如內(nèi)存管理、磁盤IO等系統(tǒng)操作。us + sy的值最好小于80%,否則說明CPU資源不足,無法滿足系統(tǒng)運(yùn)行的需求。
    • id:表示CPU處于空閑狀態(tài)的時間百分比。
    • wa:表示IO等待所占用的CPU時間百分比。如果wa大于20%,說明IO操作過慢,拖慢了整個系統(tǒng)的速度。引起I/O等待的原因可能是磁盤大量隨機(jī)讀寫造成的,也可能是磁盤或者監(jiān)控器的帶寬瓶頸(主要是塊操作)導(dǎo)致的。

(三)實(shí)際場景應(yīng)用:破解“內(nèi)存+CPU+IO”連環(huán)瓶頸

例如,某服務(wù)器使用“vmstat 5 3”命令進(jìn)行監(jiān)測,發(fā)現(xiàn)swpd = 1GB(備用倉庫正在使用)、si = 50KB/s(持續(xù)從備用倉庫讀入數(shù)據(jù))、wa = 25%(IO等待時間較長)。這一系列數(shù)據(jù)表明,服務(wù)器內(nèi)存不足,導(dǎo)致系統(tǒng)開始使用備用倉庫。而備用倉庫位于磁盤,磁盤IO速度較慢,進(jìn)而使得CPU需要等待IO操作完成,形成了“內(nèi)存不足→使用備用倉庫→磁盤IO慢→CPU等待”的連環(huán)瓶頸。在這種情況下,首先需要增加服務(wù)器的內(nèi)存容量,然后再檢查磁盤IO的性能,進(jìn)行相應(yīng)的優(yōu)化。

四、sar命令:內(nèi)存狀態(tài)的“定期復(fù)查記錄”

sar命令類似于內(nèi)存的“定期復(fù)查記錄”,它與free命令功能類似,但更適合用于“長期監(jiān)控”。例如,如果希望每隔3秒查看一次內(nèi)存變化情況,無需手動刷新,sar命令可以自動持續(xù)輸出內(nèi)存信息。

(一)使用方法:持續(xù)監(jiān)控,輕松掌握

在終端中輸入以下命令,即可實(shí)現(xiàn)每隔3秒輸出一次內(nèi)存信息,按Ctrl + C組合鍵可以停止監(jiān)控:

sar -r 3

其中,參數(shù)“-r”表示查看內(nèi)存使用率相關(guān)統(tǒng)計,后面的“3”是統(tǒng)計間隔(秒)。

(二)結(jié)果解讀:與free“互通有無”

在這里插入圖片描述

sar命令的輸出字段和free命令的核心含義一致,例如kbmemfree(空閑內(nèi)存)、kbmemused(已用內(nèi)存)、kbbuffers(緩沖區(qū))、kbcached(緩存區(qū))等,只是顯示格式有所不同。通過sar命令,用戶可以快速了解服務(wù)器的內(nèi)存狀態(tài),特別適合需要“長期觀察內(nèi)存變化”的場景,例如監(jiān)控某程序運(yùn)行時的內(nèi)存消耗情況。

五、內(nèi)存排查思路:高效定位問題的“三步法”

為了提高內(nèi)存排查的效率,可以按照“先整體、再細(xì)節(jié)、后長期”的思路進(jìn)行操作:

(一)第一步:用free快速判斷“內(nèi)存夠不夠”

首先輸入“free -h”命令,查看available(可用內(nèi)存)的占比情況。如果available值大于總內(nèi)存的20%,說明內(nèi)存充足;如果小于10%,則表明內(nèi)存緊張,需要進(jìn)一步深入排查。

(二)第二步:用vmstat找“瓶頸在哪”

如果free命令顯示內(nèi)存緊張,接下來輸入“vmstat 5 3”命令,仔細(xì)觀察swap的si/so(判斷是否在使用備用倉庫)、procs的r/b(查看進(jìn)程是否排隊)、IO的wa(確定是否因IO拖慢系統(tǒng))等指標(biāo)。通過這些數(shù)據(jù),可以定位問題究竟是單純的內(nèi)存問題,還是內(nèi)存與CPU/IO混合導(dǎo)致的問題。

(三)第三步:用sar做“長期監(jiān)控”

如果想跟蹤某程序(例如新上線的APP)的內(nèi)存消耗情況,輸入“sar -r 3”命令,持續(xù)觀察內(nèi)存的變化趨勢。通過長期監(jiān)控,可以判斷程序是否存在“內(nèi)存泄漏”問題,即程序在運(yùn)行過程中內(nèi)存使用量逐漸增加,最終導(dǎo)致內(nèi)存耗盡。

六、總結(jié)

free、vmstat、sar這三個命令在服務(wù)器內(nèi)存排查中各有其獨(dú)特的用途:

  • free命令主要用于“快速查看”服務(wù)器的內(nèi)存使用情況,為用戶提供一個初步的內(nèi)存狀態(tài)評估。
  • vmstat命令則擅長“全面排查”,能夠同時監(jiān)測內(nèi)存、CPU和IO等多個性能指標(biāo),幫助用戶深入分析系統(tǒng)性能瓶頸。
  • sar命令適用于“長期監(jiān)控”,可以持續(xù)跟蹤內(nèi)存的變化情況,對于發(fā)現(xiàn)潛在的內(nèi)存問題具有重要意義。

到此這篇關(guān)于服務(wù)器內(nèi)存排查之free、vmstat、sar命令實(shí)戰(zhàn)的文章就介紹到這了,更多相關(guān)服務(wù)器內(nèi)存排查free、vmstat、sar命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • linux分析服務(wù)器內(nèi)存常用命令與查找文件工作路徑方式

    linux分析服務(wù)器內(nèi)存常用命令與查找文件工作路徑方式

    文章介紹了如何使用`auditd`服務(wù)查看內(nèi)存使用情況,并通過`ps`命令按內(nèi)存使用排行,此外,還說明了通過進(jìn)程的工作目錄(cwd)來定位文件位置,從而確定服務(wù)的具體位置
    2025-10-10
  • 源碼安裝apache腳本部署過程詳解

    源碼安裝apache腳本部署過程詳解

    這篇文章主要介紹了源碼安裝apache腳本部署,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Linux下實(shí)時獲取WiFi與熱點(diǎn)狀態(tài)的方法詳解

    Linux下實(shí)時獲取WiFi與熱點(diǎn)狀態(tài)的方法詳解

    在智能設(shè)備開發(fā)中,網(wǎng)絡(luò)狀態(tài)感知是基礎(chǔ)而關(guān)鍵的功能,本文將手把手教你用Qt在Linux環(huán)境下實(shí)現(xiàn)熱點(diǎn)和無線網(wǎng)絡(luò)狀態(tài)的檢測,需要的朋友可以參考下
    2025-08-08
  • Linux下安裝Hadoop集群詳細(xì)步驟

    Linux下安裝Hadoop集群詳細(xì)步驟

    大家好,本篇文章主要講的是Linux下安裝Hadoop集群詳細(xì)步驟,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • linux網(wǎng)絡(luò)NAT配置方式詳解

    linux網(wǎng)絡(luò)NAT配置方式詳解

    這篇文章主要為大家詳細(xì)介紹了linux網(wǎng)絡(luò)NAT配置方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • LNMP系列教程之 設(shè)置404錯誤頁面

    LNMP系列教程之 設(shè)置404錯誤頁面

    在之前的文章中分享到”設(shè)置301重定向的方法“文章,提到301,那肯定也要說說404錯誤頁面吧。因?yàn)槲覀兡J(rèn)安裝了LNMP后404頁面不會自動設(shè)置,也不會默認(rèn)到程序的404錯誤頁面,而需要我們手工設(shè)置
    2012-09-09
  • Linux 掛載磁盤詳解及實(shí)操步驟

    Linux 掛載磁盤詳解及實(shí)操步驟

    Linux中掛載磁盤是一項(xiàng)重要的操作,可以用于擴(kuò)展存儲空間,管理數(shù)據(jù)文件,備份和存儲重要文件等,本文將詳細(xì)介紹Linux系統(tǒng)中掛載磁盤的相關(guān)概念、步驟和實(shí)際操作指南
    2023-06-06
  • linux修改ssh默認(rèn)端口實(shí)現(xiàn)方式

    linux修改ssh默認(rèn)端口實(shí)現(xiàn)方式

    文章介紹了如何修改SSH默認(rèn)端口,步驟包括修改配置文件、重啟服務(wù)以及測試新端口,還提到了SSH配置文件的順序和使用方法
    2025-11-11
  • 使用Putty遠(yuǎn)程(SSH)管理Linux VPS的圖文教程

    使用Putty遠(yuǎn)程(SSH)管理Linux VPS的圖文教程

    Putty是一個免費(fèi)的、Windows 32平臺下的telnet、rlogin和ssh客戶端,但是功能絲毫不遜色于商業(yè)的telnet類工具。
    2010-12-12
  • 解決shell無法執(zhí)行的問題

    解決shell無法執(zhí)行的問題

    這篇文章主要介紹了解決shell無法執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

达孜县| 察隅县| 阳信县| 云霄县| 沁阳市| 北宁市| 芒康县| 宜都市| 新泰市| 曲水县| 新昌县| 名山县| 安阳县| 织金县| 伊川县| 达尔| 巫山县| 锡林郭勒盟| 峨眉山市| 邳州市| 蒲城县| 齐河县| 九江县| 南召县| 遵义县| 民县| 理塘县| 福泉市| 北碚区| 丹寨县| 高要市| 郧西县| 阿尔山市| 泽库县| 新源县| 泸定县| 肥东县| 浮山县| 麟游县| 铜陵市| 斗六市|