當前位置:首頁 » 雲伺服器 » linux伺服器內存佔用率高如何排查

linux伺服器內存佔用率高如何排查

發布時間: 2023-03-08 18:54:21

linux內存佔用率過高怎麼辦

1. 使用top 查看內存的佔用情況,然後鍵入"M"命令根據內存的佔用情況降序排列("P"是CPU佔用情況降序排列)
2.關閉掉不需要的進程,
3.再使用top查看內存佔用情況,發覺內存佔用率已經降下來了,但是free -h卻還有100G被佔用(內存總共128G),vmstat發現是cache 佔用了大量內存。
4. 使用 echo 1 > /proc/sys/vm/drop_caches 釋放緩存
常用的釋放緩存的命令如下
To free pagecache:僅清除頁面緩存(PageCache)
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:清除目錄項和inode
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:清除頁面緩存,目錄項和inode
echo 3 > /proc/sys/vm/drop_caches
5.再使用free -h 查看內存使用情況,發現內存使用情況已經正常了

⑵ Linux伺服器如何查看CPU佔用率、內存佔用、帶寬佔用

 Linux伺服器如何查看CPU佔用率、內存佔用、帶寬佔用的命令

圖中紅色部分即為佔用百分率,下面是每個進程的CPU佔用率,如果伺服器是多核CPU可能在下方看到有些進程CPU佔用超過100%,這種一般是該進程使用了多核。

內存佔用率:free -m

圖中紅色部分即為佔用,即used、free即為剩餘。(注意中在第二行數字中找哦。)

帶寬佔用:

使用vmstat命令,輸入命令:vmstat

linux伺服器的相關信息查看(埠佔用,cpu、內存佔用,防火牆,系統信息,vim編輯器使用等)

一、埠佔用情況

(1)查看所有埠、進程的使用情況: netstat -tunlp

(2)查看某一埠的使用情況: netstat -tunlp|grep 5560

二、查看內存使用情況

(1)查看佔用情況(動態):top

按下P(大寫)可以找到佔用內存最大的進程

(2)查看佔用情況(總的):free

(3)查看佔用內存最多的N個進程: ps -aux | sort -k4nr | head -K如果是10個進程,K=10,如果是最高的三個,K=3

(4)查看硬碟空間大小:df -lh

三、防火牆

防火牆iptables和firewall

(1)查看防火牆狀態:firewall-cmd --state

(2)開啟、關閉防火牆:開啟:systemctl start firewalld關閉:systemctl stop firewalld.service 或者 service firewalld stop

(3)重啟防火牆:firewall-cmd --reload(重新載入配置,在添加規則之後,需要執行此命令)

(4)防火牆是否開機啟動:禁止防火牆開機啟動:systemctl disable firewalld.service設置防火牆開機啟動:systemctl enable firewalld.service

四、查看系統信息

(1)查看系統位數:getconf LONG_BIT

(2)查看內存信息:查看所有內存信息: cat /proc/meminfo查看內存容量: grep "MemTotal" /proc/meminfo

 (3)查看CPU信息:查看cpu個數(幾核):cat /proc/cpuinfo |grep "processor"|wc -l

五、linux中文亂碼:

我只是用了第三部,更改了ssh客戶端屬性配置就可以了

1. 配置SSH 終端 (以xshell為例):

打開「文件」(File)- 「屬性」 (Properties), 在「終端」(Terminal),將「編碼」(Encoding)改為UTF-8 即可。

六、Xshell遠程連接Linux時無法使用小鍵盤的解決方式:

七、linux中vi編輯器的退出操作

保存,但不退出vi             :w

保存並退出vi                    :wq

退出vi,但不保存更改      :q!

用其他文件名保存            :w filename

在現有文件中保存並覆蓋該文件    :w! filename

查找文字:在一般模式下輸入/和你要查找的文字單詞,例如/port,此時再按下 n 會跳轉至改文字所在的下一處。

⑶ Linux系統CPU/內存使用率過高的問題排查

    伺服器出現由內存問題引發的故障,例如系統內部服務響應速度變慢、伺服器登錄不上、系統觸發 OOM(Out Of Memory)等。通常情況下當實例內存使用率持續高於90%時,可判斷為實例內存使用率過高。CPU/內存使用率過高的問題原因可能由硬體因素、系統進程、業務進程或者木馬病毒等因素導致。

    筆者以前寫過一篇文章- Linux 下的 60 秒分析的檢查清單 ,適用於 任何性能問題 的分析工作,這一篇文章是關於CPU/內存使用率的具體的排查思路總結。

    執行 top 命令後按  M ,根據駐留內存大小進行排序,查看 「RES」 及 「SHR」 列是否有進程佔用內存過高。按 P,以 CPU 佔用率大小的順序排列進程列表,查看是否有進程佔用cpu過高。

    如果有異常進程佔用了大量 CPU 或內存資源,記錄需要終止的進程 PID,輸入k,再輸入需要終止進程的 PID ,按 Enter。

    另外說明一下,top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制,最常用的是M和P。

    CPU 空閑但高負載情況,Load average 是 CPU 負載的評估,其值越高,說明其任務隊列越長,處於等待執行的任務越多。執行ps -axjf命令,查看進程狀態,並檢查是否存在 D 狀態進程。D 狀態指不可中斷的睡眠狀態,該狀態進程無法被殺死,也無法自行退出。若出現較多 D 狀態進程,可通過恢復該進程依賴資源或重啟系統進行解決。

    Linux 系統通過分頁機制管理內存的同時,將磁碟的一部分劃出來作為虛擬內存。而 kswapd0 是 Linux 系統虛擬內存管理中負責換頁的進程。當系統內存不足時,kswapd0 會頻繁的進行換頁操作。換頁操作非常消耗 CPU 資源,導致該進程持續佔用高 CPU 資源。

    執行top命令,找到 kswapd0 進程。觀察 kswapd0 進程狀態,若持續處於非睡眠狀態,且運行時間較長並持續佔用較高 CPU 資源,執行 vmstat ,free,ps 等指令,查詢系統內進程的內存佔用情況,重啟系統或終止不需要且安全的進程。如果 si,so 的值也比較高,則表示系統存在頻繁的換頁操作,當前系統的物理內存已經不能滿足您的需要。  si  表示每秒從交換區寫入內存的大小(單位:kb/s) , so  每秒從內存寫到交換區的大小。

    執行cat/proc/meminfo |grep-i shmem命令查看共享內存。

        buddy可以以頁為單位獲取連續的物理內存了,即4K為單位。slab負責需要頻繁的獲取/釋放並不大的連續物理內存,比如幾十位元組。執行cat /proc/meminfo | grep -i SUnreclaim命令查看slab 內存。

        標準的 4KB 大小的頁面外,內存大頁管理內存中的巨大的頁面,處理較少的頁面映射表,從而減少訪問/維護它們的開銷。執行cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize" 查看內存大頁。

內存使用率計算:

 (Total - available)100% / Total

(Total - Free - Buffers - Cached - SReclaimable + Shmem)* 100% / Total

  cat /proc/meminfo查看信息含義:

⑷ 如何檢查linux伺服器cpu,內存性能

1.查看系統負載
(1)uptime
這個命令可以快速查看機器的負載情況。
在Linux系統中,這些數據表示等待CPU資源的進程和阻塞在不可中斷IO進程(進程狀態為D)的數量。
命令的輸出,load average表示1分鍾、5分鍾、15分鍾的平均負載情況。
通過這三個數據,可以了解伺服器負載是在趨於緊張還是趨於緩解。
如果1分鍾平均負載很高,而15分鍾平均負載很低,說明伺服器正在命令高負載情況,需要進一步排查CPU資源都消耗在了哪裡。
反之,如果15分鍾平均負載很高,1分鍾平均負載較低,則有可能是CPU資源緊張時刻已經過去。
(2)W
Show who is logged on and what they are doing.
可查詢登錄當前系統的用戶信息,以及這些用戶目前正在做什麼操作
其中的load average後面的三個數字則顯示了系統最近1分鍾、5分鍾、15分鍾的系統平均負載情況
注意:
load average這個輸出值,這三個值的大小一般不能大於系統邏輯CPU的個數。
如果輸出中系統有4個邏輯CPU,如果load average的三個值長期大於4時,說明CPU很繁忙,負載很高,可能會影響系統性能,
但是偶爾大於4時,倒不用擔心,一般不會影響系統性能。相反,如果load average的輸出值小於CPU的個數,則表示CPU還有空閑
2.dmesg | tail
該命令會輸出系統日誌的最後10行。
這些日誌可以幫助排查性能問題.
3.vmstat
vmstat Virtual Meomory Statistics(虛擬內存統計),用來獲得有關進程、虛存、頁面交換空間及 CPU活動的信息。這些信息反映了系統的負載情況。
後面跟的參數1,表示每秒輸出一次統計信息,表頭提示了每一列的含義
(1)監控進程procs:
r:等待在CPU資源的進程數。
這個數據比平均負載更加能夠體現CPU負載情況,數據中不包含等待IO的進程。如果這個數值大於機器CPU核數,那麼機器的CPU資源已經飽和(出現了CPU瓶頸)。
b:在等待io的進程數 。
(2)監控內存memoy:
swpd:現時可用的交換內存(單位KB)
free:系統可用內存數(以千位元組為單位)
buff: 緩沖去中的內存數(單位:KB)。
cache:被用來做為高速緩存的內存數(單位:KB)。
(3)監控swap交換頁面
si: 從磁碟交換到內存的交換頁數量,單位:KB/秒。
so: 從內存交換到磁碟的交換頁數量,單位:KB/秒。
如果這個數據不為0,說明系統已經在使用交換區(swap),機器物理內存已經不足。
(4)監控 io塊設備
bi: 發送到塊設備的塊數,單位:塊/秒。
bo: 從塊設備接收到的塊數,單位:塊/秒。
(5)監控system系統
in: 每秒的中斷數,包括時鍾中斷。
cs: 每秒的環境(上下文)轉換次數。
(6)監控cpu中央處理器:
us:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閑時間 。以百分比表示。
us, sy, id, wa, st:這些都代表了CPU時間的消耗,它們分別表示用戶時間(user)、系統(內核)時間(sys)、空閑時間(idle)、IO等待時間(wait)和被偷走的時間(stolen,一般被其他虛擬機消耗)。
這些CPU時間,可以讓我們很快了解CPU是否出於繁忙狀態。
註:
如果IO等待時間很長,那麼系統的瓶頸可能在磁碟IO。
如果用戶時間和系統時間相加非常大,CPU出於忙於執行指令。
如果有大量CPU時間消耗在用戶態,也就是用戶應用程序消耗了CPU時間。這不一定是性能問題,需要結合r隊列,一起分析。
4.mpstat -P ALL 1
該命令可以顯示每個CPU的佔用情況,如果有一個CPU佔用率特別高,那麼有可能是一個單線程應用程序引起的。
MultiProcessor Statistics的縮寫,是實時系統監控工具
其報告與CPU的一些統計信息,這些信息存放在/proc/stat文件中。在多CPUs系統里,其不但能查看所有CPU的平均狀況信息,而且能夠查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示監控哪個CPU, cpu在[0,cpu個數-1]中取值
internal 相鄰的兩次采樣的間隔時間
count 采樣的次數,count只能和delay一起使用
all : 指所有CPU
%usr : 顯示在用戶級別(例如應用程序)執行時CPU利用率的百分比
%nice :顯示在擁有nice優先順序的用戶級別執行時CPU利用率的百分比
%sys : 現實在系統級別(例如內核)執行時CPU利用率的百分比
%iowait : 顯示在系統有未完成的磁碟I/O請求期間CPU空閑時間的百分比
%irq : 顯示CPU服務硬體中斷所花費時間的百分比
%soft : 顯示CPU服務軟體中斷所花費時間的百分比
%steal : 顯示虛擬機管理器在服務另一個虛擬處理器時虛擬CPU處在非自願等待下花費時間的百分比
%guest : 顯示運行虛擬處理器時CPU花費時間的百分比
%idle : 顯示CPU空閑和系統沒有未完成的磁碟I/O請求情況下的時間百分比
系統有兩個CPU。如果使用參數 -P 然後緊跟CPU編號得到指定CPU的利用率。
( Ubuntu安裝: apt-get install sysstat)
5.pidstat 1
pidstat命令輸出進程的CPU佔用率,該命令會持續輸出,並且不會覆蓋之前的數據,可以方便觀察系統動態
6.iostat -xz 1
iostat命令主要用於查看機器磁碟IO情況
r/s, w/s, rkB/s, wkB/s:分別表示每秒讀寫次數和每秒讀寫數據量(千位元組)。讀寫量過大,可能會引起性能問題。
await:IO操作的平均等待時間,單位是毫秒。這是應用程序在和磁碟交互時,需要消耗的時間,包括IO等待和實際操作的耗時。如果這個數值過大,可能是硬體設備遇到了瓶頸或者出現故障。
avgqu-sz:向設備發出的請求平均數量。如果這個數值大於1,可能是硬體設備已經飽和(部分前端硬體設備支持並行寫入)。
%util:設備利用率。這個數值表示設備的繁忙程度,經驗值是如果超過60,可能會影響IO性能(可以參照IO操作平均等待時間)。如果到達100%,說明硬體設備已經飽和。
註:如果顯示的是邏輯設備的數據,那麼設備利用率不代表後端實際的硬體設備已經飽和。值得注意的是,即使IO性能不理想,也不一定意味這應用程序性能會不好,可以利用諸如預讀取、寫緩存等策略提升應用性能
7.free -m
free命令可以查看系統內存的使用情況,-m參數表示按照兆位元組展示。
最後兩列分別表示用於IO緩存的內存數,和用於文件系統頁緩存的內存數。
註:
第二行-/+ buffers/cache,看上去緩存佔用了大量內存空間。這是Linux系統的內存使用策略,盡可能的利用內存,如果應用程序需要內存,這部分內存會立即被回收並分配給應用程序。
如果可用內存非常少,系統可能會動用交換區(如果配置了的話),這樣會增加IO開銷(可以在iostat命令中提現),降低系統性能。
8.sar -n DEV 1
sar命令在這里可以查看網路設備的吞吐率。
在排查性能問題時,可以通過網路設備的吞吐量,判斷網路設備是否已經飽和。
9.sar -n TCP,ETCP 1
sar命令在這里用於查看TCP連接狀態,其中包括:
active/s:每秒本地發起的TCP連接數,既通過connect調用創建的TCP連接;
passive/s:每秒遠程發起的TCP連接數,即通過accept調用創建的TCP連接;
retrans/s:每秒TCP重傳數量;
TCP連接數可以用來判斷性能問題是否由於建立了過多的連接,進一步可以判斷是主動發起的連接,還是被動接受的連接。TCP重傳可能是因為網路環境惡劣,或者伺服器壓力過大導致丟包。
10.top
top命令包含了前面好幾個命令的檢查的內容。比如系統負載情況(uptime)、系統內存使用情況(free)、系統CPU使用情況(vmstat)等。
因此通過這個命令,可以相對全面的查看系統負載的來源。同時,top命令支持排序,可以按照不同的列排序,方便查找出諸如內存佔用最多的進程、CPU佔用率最高的進程等。
但是,top命令相對於前面一些命令,輸出是一個瞬間值,如果不持續盯著,可能會錯過一些線索。這時可能需要暫停top命令刷新,來記錄和比對數據。

⑸ linux 系統mysql 伺服器內存利用率很高了怎麼解決

Linux 進程通過 C 標准庫中的內存分配函數 malloc 向系統申請內存,但是到真正與內核交互之間,其實還隔了一層,即內存分配管理器(memory allocator)。常見的內存分配器包括:ptmalloc(Glibc)、tcmalloc(Google)、jemalloc(FreeBSD)。MySQL 默認使用的是 glibc 的 ptmalloc 作為內存分配器。

目前 jemalloc 應用於 Firefox、FaceBook 等,並且是 MariaDB、Redis、Tengine 默認推薦的內存分配器,而 tcmalloc 則應用於 WebKit、Chrome 等。

⑹ linux中內存佔用率過高,如圖

1.首先考慮增加物理內存,2G太少了
2.查看mysql里的線程,觀察是否有長期運行或阻塞的sql:

show full processlist
3.查看mysql內存,緩存的相關配置,使用如

show global variables like '%sort_buffer_size%';
如不符合當前系統負載量,說明當前配置不合理,需要進行調整

⑺ 正確理解linux運行內存過高的問題以及free命令

周末閑來無事,查看了一下伺服器的運行狀態。發現通過監控頁面可以看到,伺服器的運行內存一直佔用在98%左右,難道伺服器出現什麼問題了???

後來通過了解到,linux系統和平時使用的windwos系統內存運行機制不同。

windows系統的內存是程序運行過程中需要使用才會用到,不用時空閑著。所以當內存使用率過高時,需要檢查是否超負載運行。解決方法是停止掉一些進程。

linux系統中,是進程優先使用內存,而不是磁碟。這樣會加快讀取速度。當有新的進程啟動時,再從內存中開辟出一定空間,為新的進程所用。即使進程退出,也不會立刻從內存中清理掉,這樣可以加快下次啟動進程的速度。所以內存一直是使用率很高的。這是linux系統的獨特之處,初使用linux系統的同學需要轉換一些思維。不用為linux的內存使用率高而擔心。

在圖1中,第三行反映出真實內存使用率為12.5%

再介紹一個linux查看內存的命令, free

free命令可以顯示當前系統為使用和以使用的內存情況,還可以顯示被內存使用的內存緩沖區。

free命令默認以K單位來顯示內存使用情況

Mem行顯示數據

total:總內存大小

used:已使用內存大小

free:當前空閑內存大小

shared:多個進程共享的內存總額

buffers/cached:緩存內存數據

-/+ buffers/cache行數據顯示

這一行的數據代表應用內存使用情況,可理解為真實內存使用情況。如圖1中第三行數據。

used:當前(真實)使用內存總數

free:當前(真實)空閑內存總數

-/+ buffers/cache:    1025604    7165460可理解為當前已經使用的內存為1/8,計算公式used/(used+free)。也就是12.6%左右。

Swap代表交換分區,不做過多詳解

free常用參數:

free -b      #以Byte為單位顯示內存使用情況

free -k      #以KB為單位顯示內存使用情況,也是默認參數

free -m      #以MB為單位顯示內存使用情況

free -g      #以GB為單位顯示內存使用情況

free -o      #不顯示應用(真實)內存使用情況列,不推薦

free -s<數字> #間隔數字秒數刷新顯示內存使用情況

free -t      #顯示內存總和列

free -V     #顯示當前版本

熱點內容
c語言16進製表示方法 發布:2025-05-17 13:11:25 瀏覽:479
ftp單位 發布:2025-05-17 13:10:03 瀏覽:141
c語言編寫n的階乘 發布:2025-05-17 13:10:02 瀏覽:683
lockjava 發布:2025-05-17 13:02:08 瀏覽:310
只狼和看門狗哪個配置高 發布:2025-05-17 12:50:21 瀏覽:205
扁桃玩的伺服器地址 發布:2025-05-17 12:18:25 瀏覽:511
u盤上傳歌 發布:2025-05-17 12:14:51 瀏覽:615
入門c語言設計 發布:2025-05-17 12:08:31 瀏覽:41
c3演算法 發布:2025-05-17 12:04:19 瀏覽:365
phprecv 發布:2025-05-17 11:55:00 瀏覽:616