zoukankan      html  css  js  c++  java
  • 服务器 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

  • 相关阅读:
    C++test 关于resource参数和include/exclude参数说明
    开发程序 ip 127.0.0.0 0.0.0.0原理与区别
    安装rails旧版本出错bin_path': can't find gem railties (["3.0.5"]) with executable rails (Gem::GemNotFoundException)
    rails excel的创建
    ruby nil? empty? blank? 的区别
    rails 调试工具pry 换掉debugger 和 rails c
    rails respond_to 的原理与使用
    rails transaction 的用法
    ssh的传送文件命令
    出现了pid的错误A server is already running. 和如何改变webrick的端口值
  • 原文地址:https://www.cnblogs.com/taihao/p/13569654.html
Copyright © 2011-2022 走看看