服務器 swap分區使用率高的原因分析及增加swap空間


前述:正常情況下swap分區使用率都很低或者幾乎為0。如果出現占用率很高的情況,最快捷的解決辦法就是查找到相關的進程id並重啟相關進程。

#查看占用swap分區進程id

for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10

[root@localhost ~]# for i in $( cd /proc;ls |grep "^[0-9]"|awk ' $0 >100') ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps 2>/dev/null ; done | sort -k2nr | head -10
5879 4685.23M
2143 10.4062M
5531 8.57031M
2349 3.82031M
2392 3.74609M
4580 3.63281M
2504 3.15625M
2491 2.76562M
4324 2.67969M
2565 2.61719M

可發現PID為5879的進程占用了4個多G,通過top命令發現此PID對應的是oracle下nmccollector。

[root@localhost ~]# top
top - 09:25:12 up 15 days, 16:01, 1 user, load average: 0.08, 0.07, 0.08
Tasks: 224 total, 1 running, 223 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.7%us, 0.4%sy, 0.0%ni, 98.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 7967824k total, 7810600k used, 157224k free, 416484k buffers
Swap: 12287992k total, 5077816k used, 7210176k free, 809840k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5879 ORACLE 20 0 11.5g 5.8g 15m S 1.3 76.4 81:53.50 nmccollector

經查詢資料發現nmccollector是OEM控制監測方面的,在EM下重啟此服務即可回收swap空間。打開EM,在首頁下方點擊“在內存中訪問模式下監視”,然后禁用內存訪問模式,這樣你的nmccollector.exe進程應該就會沒有,你再回到EM,開啟SQL訪問模式!

增加swap空間:

1.添加swap分區

使用dd命令創建/home/swap這么一個分區文件。文件的大小是2048000 個block,一般情況下1個block為1K,所以這里空間是2G。

dd if=/dev/zero of=/var/swapfile bs=1024 count=2048000 //添加交換文件並設置其大小為2G


2.執行完畢,對交換文件格式化並轉換為swap分區:

mkswap /var/swapfile


3.掛載並激活分區:

swapon /var/swapfile


4 賦權限

chmod -R 0600 /var/swapfile

現在再用free -m命令查看一下內存和swap分區大小,就發現增加了2G的空間了。

注意當計算機重啟了以后,發現swap還是原來那么大,新的swap沒有自動啟動,還要手動啟動。那我們需要修改/etc/fstab文件

5.設置開機自動掛載該分區:
vi /etc/fstab
在fstab文件末尾追加如下內容后:wq!保存即可:

/var/swapfile swap swap defaults 0 0

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM