日常伺服器巡檢時,free m命令的說明

2021-09-12 10:38:41 字數 4000 閱讀 9225

以上是對某台伺服器進行記憶體的使用情況進行檢查,好多新手統計當前記憶體的使用率=user/total=744 / 16031 * 100%=5%

,感覺沒毛病,加上用top命令檢視cpu使用率時,發現使用率為0.3%

先檢視第二台伺服器cpu使用情況

(類似上面的第一台伺服器,cpu使用率不高,那麼就檢視它(第二台)的記憶體使用率了)

在第二台伺服器,你會發現沒有什麼程式在執行,但是使用top或free命令看到可用記憶體free項會很少,那麼這是什麼情況呢?

其實一開始,算記憶體的使用率=user/total=744 / 16031 * 100%=5%

用這公式是錯誤的了,這是linux新手,容易犯的錯誤!

(以上例子進行講解)

#free -m

total            used         free      shared       buffers       cached

mem:                        1603115861170        0              287             15079

-/+ buffers/cache:                             494       15537

swap:                        8015                 0          8015

+++++++++++++++++++++我是華麗的分隔線+++++++++++++++++++++

-m:   記憶體大小以m為單位,只輸free命令時是以kb為單位。

totel: 機器總的物理記憶體。

used:用掉的記憶體。

free:空閒的物理記憶體。

shared:多個程序共享的記憶體總和,一般數值為0,當前廢棄不用。

buffers: 寫快取,資料儲存時,先儲存到磁碟緩衝區,然後再寫入到永久空間。

cached: 讀快取,資料從磁碟讀出後,暫留在緩衝區,預備程式接下來的使用。

- buffers/cache:序角度上看已經使用的記憶體數,這才是程式實實在在用掉的記憶體數。

+ buffers/cache:程式角度上看未使用、可用的記憶體數。

swap:total是交換分割槽的總記憶體大小,free是交換分割槽空閒可用的記憶體大小。

#free -m

total            used         free      shared       buffers       cached

mem:                        1603115861       170        0              287             15079

-/+ buffers/cache:49415537

swap:                        8015                 0          8015

-buffers/cache:(已用)的記憶體數,即used-buffers-cached=15861-287-15079=495

+buffers/cache:(可用)的記憶體數,即free+buffers+cached=170+287+15079=15537

++華麗的分割線++++++++++++++++++++

(注意:雲主機或vmware的虛擬機器的free -m命令是看不到-/+ buffers/cache這一項的,是直接計算使用率=used/total)

++華麗的分割線++++++++++++++++++++

在linux中,記憶體是拿來用的,不是拿來看的。而在windows中,無論你的真實物理記憶體有多少,它都會用硬碟交換檔案來讀,即使是記憶體還有一大部分。這也就是windows常常提示虛擬空間不足的原因。可以想見,硬碟怎麼會快過記憶體,所以我們在觀察linux的記憶體使用情況時,只要沒發現用swap的交換空間,就不用擔心自己的記憶體太少。如果常常看到swap用了很多,那麼你就要考慮加物理記憶體了。這也是在linux伺服器上看記憶體是否夠用的標準。從使用者和作業系統的角度來看,其大小空間是有區別的。像buffer/cached的記憶體,由於這塊記憶體從作業系統的角度確實被使用,但如果使用者要使用,這塊記憶體是可以很快被**而被使用者空間程式使用,因此從使用者角度而言這塊記憶體應被劃為空閒狀態。

但是如何**cache及什麼時候cache是回話不了,想更深層了解buffers/cache的區別,個人發現一位大神的精彩講解,請看下面的鏈結!

(摘取部分總結)

當 cache 作為檔案快取被釋放的時候會引發 io 變高,這是 cache 加快檔案訪問速度所要付出的成本。

tmpfs 中儲存的檔案會占用 cache 空間,除非檔案刪除否則這個 cache 不會被自動釋放。

使用 shmget 方式申請的共享記憶體會占用 cache 空間,除非共享記憶體被 ipcrm 或者使用 shmctl 去 ipc_rmid,否則相關的 cache 空間都不會被自動釋放。

使用 mmap 方法申請的 map_shared 標誌的記憶體會占用 cache 空間,除非程序將這段記憶體 munmap,否則相關的 cache 空間都不會被自動釋放。

實際上 shmget、mmap 的共享記憶體,在核心層都是通過 tmpfs 實現的,tmpfs 實現的儲存用的都是 cache。

伺服器巡檢規範

1.檢查伺服器運 況,記憶體負載,儲存負載,cpu負載,網路負載,負載過高時進行資源釋放操作,或者對資源進行擴容 2.檢查機房伺服器以及儲存上的硬碟指示燈,報紅或報黃時,排查原因,若硬碟損壞或將要損壞,應及時對相應硬碟進行更換 3.檢查機房溫度,確保機房空調的製冷以及送風功能正常,檢查機房濕度,確保...

伺服器巡檢規範

伺服器巡檢規範 01.伺服器主機巡檢規範 02.伺服器日常巡檢細則 03.管理員賬號管理規範 04.使用者伺服器系統使用規範 05.機房來訪人員管理規範 06.主機防火牆管理規範 07.組織容器命名規範 08.伺服器主機名命名規範 01.伺服器主機巡檢規範 1.檢查伺服器運 況,記憶體負載,儲存負載...

伺服器日常維繫命令

show variables show variables like log show variables like slow set global log slow queries on 解析dns nslookup shippingapi.ebay.cn nslookup api 3t.payp...