服务器 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

 

posted @ 2020-08-27 09:43  玄澈  阅读(3484)  评论(0编辑  收藏  举报