国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

Linux服務(wù)器內存占用高排查方法

2024-06-17 10:04:50 559

Linux服務(wù)器內存占用高排查方法

藍隊云小課堂:

當Linux服務(wù)器內存占用高時(shí),可以按照以下步驟進(jìn)行排查:

查看內存使用情況

使用free命令可以查看系統的內存使用情況,包括總內存、已用內存、空閑內存等信息。

有時(shí)系統內存占用高可能是由緩存和緩沖區所導致的。Linux系統會(huì )利用未分配的內存作為緩存和緩沖區,以提高文件訪(fǎng)問(wèn)速度。

# -h 人類(lèi)可讀的格式輸出信息
free
-h

# 可能返回
          total       used       free     shared buff/cache   available
內存:       15Gi       1.5Gi       12Gi       46Mi       1.4Gi       13Gi
交換:      2.0Gi         0B       2.0Gi

查看進(jìn)程內存占用

使用tophtop命令可以查看系統進(jìn)程的內存占用情況,按照內存使用量排序,找出消耗較大的進(jìn)程。

htop命令可使用 yum install htop 進(jìn)行安裝

# 命令進(jìn)入htop的交互界面通過(guò)按鍵組合進(jìn)行交互
htop

# top命令進(jìn)入界面,按下大寫(xiě)字母 M 按照內存占用從高到低進(jìn)行排序
top

# 可能返回
top - 08:16:26 up 15 min,  1 user, load average: 0.00, 0.04, 0.05
Tasks:  
89 total,   1 running,  88 sleeping,   0 stopped,   0 zombie
%Cpu(s):  
0.3 us,  0.7 sy,  0.0 ni, 98.8 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st

PID USER     PR NI   VIRT   RES   SHR S %CPU %MEM     TIME
+ COMMAND                                                                                                                                      
2292 root      17  -3 1016716  40844  16904 S   1.3  2.0   0:09.14 YDService                                                                                                                                    
1028 root      20   0  574288  19516   6152 S   0.0  1.0   0:00.23 tuned                                                                                                                                        
1646 root      20   0  987628  19036   5824 S   0.0  0.9   0:00.29 YDLive                                                                                                                                      
1709 root      20   0  622856  14296   3316 S   0.7  0.7   0:05.68 barad_agent                                                                                                                                  
 
681 polkitd   20   0  614324  11116   4684 S   0.0  0.5   0:00.03 polkitd                                                                                                                                      
1027 root      10 -10   61488  10136   8564 S   0.0  0.5   0:00.00 iscsid                                                                                                                                      
1255 root      20   0  218528   9648   2984 S   0.0  0.5   0:00.07 rsyslogd                                                                                                                                    
1708 root      20   0  164896   9496   2080 S   0.0  0.5   0:00.53 barad_agent              

查看系統日志

查看系統日志可以幫助定位內存占用高的原因。

# journalctl命令查看系統日志,過(guò)濾關(guān)鍵詞(“memory”或“oom”)查找相關(guān)日志
journalctl |
grep -i memory

# 內核日志包含有關(guān)內存使用情況
grep -i memory /var/log/messages

內存泄漏檢測

如果懷疑有內存泄漏,可使用valgrind進(jìn)行內存泄漏檢測。

由于 valgrind 的工作原理,它可能會(huì )使程序的運行速度變慢,并且可能會(huì )增加程序的內存使用量。因此,通常只在開(kāi)發(fā)和調試階段使用 valgrind,而不是在生產(chǎn)環(huán)境中。

# 對程序 nginx 進(jìn)行 --leak-check=full 啟用完全的內存泄漏檢測
valgrind
--leak-check=full nginx

查看共享內存

如果共享內存占用較多,需要進(jìn)一步檢查是哪個(gè)進(jìn)程在使用共享內存。

# 查看命令
cat /proc/meminfo | grep -i shmem

# 返回結果中Shmem表示系統中當前使用的共享內存總量
Shmem:            
49004 kB

查看不可回收的slab內存

查看不可回收的slab內存占用情況,如果這部分內存占用較高,可以使用slabtop命令查看是哪些slab占用大。

# 查看
cat /proc/meminfo | grep -i SUnreclaim

# slabtop 命令用于實(shí)時(shí)顯示內核的“slab”內存緩存信息
slabtop

檢查大頁(yè)內存

查看是否配置了內存大頁(yè)。如果HugePages_Total輸出非0,表示配置了內存大頁(yè)。需要確認這些大頁(yè)是業(yè)務(wù)自身配置還是其它惡意程序配置。

# 查看
cat /proc/meminfo | grep -iE "HugePages_Total|Hugepagesize"

# 可能返回
HugePages_Total:      
0
Hugepagesize:      
2048 kB

檢查Swap分區

如果Swap分區使用過(guò)多,說(shuō)明系統已經(jīng)開(kāi)始使用磁盤(pán)作為內存擴展,這可能會(huì )影響性能。

# 命令一
free

# 命令二
swapon
-s

分析內存使用情況

可以使用pmap命令分析特定進(jìn)程的內存使用情況,或者使用perf命令進(jìn)行更詳細的性能分析。

更多小知識,可聯(lián)系藍隊云一起探討。


提交成功!非常感謝您的反饋,我們會(huì )繼續努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題:
-->