這篇文章主要介紹Linux內存異常問題如何處理,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
從策劃到設計制作,每一步都追求做到細膩,制作可持續發展的企業網站。為客戶提供成都網站建設、成都網站制作、網站策劃、網頁設計、域名與空間、雅安服務器托管、網絡營銷、VI設計、 網站改版、漏洞修補等服務。為客戶提供更好的一站式互聯網解決方案,以客戶的口碑塑造優易品牌,攜手廣大客戶,共同發展進步。
1、查看系統內存的使用情況
從中可以看到系統內存總大小是31G,已使用21G,空閑9G,cache的2G,swap暫未使用
點擊(此處)折疊或打開
free -g
total used free shared buffers cached
Mem: 31 21 9 0 0 2
-/+ buffers/cache: 19 11
Swap: 3 0 3
2、查看系統進程內存占用情況
通過top簡單M按照內存使用情況排序看,系統內存使用大的也就245M,總體使用不會超過19G
點擊(此處)折疊或打開
top - 17:59:04 up 6:44, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 199 total, 1 running, 197 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 32864556k total, 22515836k used, 10348720k free, 71220k buffers
Swap: 4128760k total, 0k used, 4128760k free, 2101028k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2892 oracle 20 0 211m 13m 9888 S 0.0 0.0 0:01.16 tnslsnr
2978 oracle 20 0 211m 13m 9888 S 0.0 0.0 0:01.17 tnslsnr
1353 root 20 0 53088 9312 6396 S 0.0 0.0 0:00.02 VGAuthService
1332 root 20 0 164m 7784 4572 S 0.0 0.0 0:12.95 vmtoolsd
1423 root 20 0 199m 5244 4344 S 0.0 0.0 0:07.58 ManagementAgent
72153 root 20 0 98.1m 4016 3028 S 0.0 0.0 0:00.24 sshd
72157 root 20 0 105m 1960 1544 S 0.0 0.0 0:00.14 bash
1550 root 20 0 245m 1744 1104 S 0.0 0.0 0:00.11 rsyslogd
3、通過腳本進一步查看系統內存使用情況
查看所有PID使用的內存大值以及當前值
點擊(此處)折疊或打開
for pid in `ls /proc/|grep "^[0-9]"`; do echo $pid;cat /proc/${pid}/status|grep VmPeak|awk -F':' '{print $2}'|grep -v "^$|^#"|sort -nk 1 ; done
for pid in `ls /proc/|grep "^[0-9]"`; do echo $pid;cat /proc/${pid}/status|grep RSS|awk -F':' '{print $2}'|grep -v "^$|^#"|sort -nk 1 ; done
4、通過上述的兩個內存查看,基本可以排除是由于進程占用了大量的系統內存,那么我們還有什么思路會導致系統內存被大量占用呢?
由于這些服務器是虛擬機,我懷疑是不是由于物理內存的共享導致的內存占用呢? (由于宿主機不在我這,所以這個不好排查)
或者會不會是某個內存占用,未釋放導致的系統內存被占用?(經過重啟服務器,發現系統內存在啟動即被占用19G)
亦或者是某個系統參數設置導致系統內存被啟動就分配占用?(聯想到hugepage可能會導致此類問題)
5、檢查hugepage是否開啟
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled (其他非rhel linux 可使用cat
/sys/kernel/mm/transparent_hugepage/enabled)
[always] madvise never
發現系統開啟了透明大頁,通過下面命令進一步確認
# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 9732
HugePages_Free: 9732
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
6、關閉Hugepage,釋放內存
vi /etc/sysctl.conf
#vm.nr_hugepages = 9732 將大頁數量的配置注釋掉或者刪除,然后通過sysctl -p使其生效
vi /etc/security/limits.conf
#oracle soft memlock unlimited ##用戶內存鎖限制注釋掉
#oracle hard memlock unlimited
重啟OS,檢查系統內存是否正常,大頁是否關閉
free -g
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
cat /proc/meminfo | grep -i huge
7、Hugepage附錄
(1)開啟hugepage優缺點
優點:提高TLB的命中率、利用HugePages不會被Swap 的特性保證內存不會被交換到Swap中
缺點:占用較大的系統內存,即時不起任何應用的情況下,也會占用固定大小系統內存。
(2)使用開啟大頁場景
共享內存設置超過8G+,并且需要做大數據處理,保障數據盡量在內存中不會被經常swap
(3)查看系統頁大小和系統塊大小
getconf PAGESIZE
tune2fs -l /dev/sda1 |grep 'Block size'
(4)大頁默認大小以及數量設置
大頁的默認大小是2M,可通過/etc/sysctl.conf vm.nr_hugepages = 9732設置大頁的數量,總的大頁大小是9732*2/1024=19G
以上是“Linux內存異常問題如何處理”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創新互聯-成都網站建設公司行業資訊頻道!
當前標題:Linux內存異常問題如何處理-創新互聯
網頁網址:http://vcdvsql.cn/article0/djhhoo.html
成都網站建設公司_創新互聯,為您提供標簽優化、做網站、手機網站建設、電子商務、定制開發、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯