swap相关问题
在linux(Centos)服务器运行过程中常会碰到一些超出服务器物理内存极限的访问量,为维持服务器正常运作,可为服务器配置swap分区,用硬盘来缓冲内存紧张。
但访问峰值过后,被分配到SWAP分区中的数据并不会自动释放,当SWAP占用率超过30%就会对系统性能造成一定的影响。这种情况下需要手动刷新系统的SWAP分区来达到将SWAP分区中读取缓慢的数据转移到物理内存的目的。
刷新SWAP分区的命令:
swapoff -a && swapon -a
实例:
附:关闭swap命令:
swapoff -a
开启swap命令:
swapon -a
linux下查看swap分区被哪些进程占用实现脚本
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 ;done |sort -k2nr
swap过高的问题解决
打开大的文件或物理内存被占用,都可能导致swap过高。
查看系统打开的大文件列表
lsof | awk 'NF == 9 { print $0}' | sort +6 -7nr | head
查看打开文件的总大小:
lsof | awk 'NF == 9 { sum += $7} ;END {print sum/1024/1024/1024}'