一、查看cpu/内存使用情况
- 使用top命令 + m
- free -m
- 发现 free 列只有1G
- buff/cache 缓存500M
- swaps: 占用超过80%
二、尝试解决
- 尝试重启swap 交换区
- swapoff -a & swapon -a
- error: swapoff: /dev/mapper/cryptswap1: swapoff failed: Cannot allocate memory
- 当前Linux系统把/dev/mapper/cryptswap1这个设备当做了交换分区,如果当前改交换分区使用的容量大于系统当前剩余的内存,就会报这个错误,因为在关闭交换分区的时候,需要把分区的数据全部写入到内存,如果内存容量不足,就会导致这个错误。
- 尝试释放缓存
echo 1 > /proc/sys/vm/drop_caches
echo 2 或 3 或 4 > /proc/sys/vm/drop_caches
- 尝试重启swap失败,swap使用内存过多,剩余内存不够
- 查询出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 2>/dev/null ; done | sort -k2nr |head
- 查出占用过高的进程 ps -ef |grep pid
- 查出mate-indicators 进程占用最高,该进程是用户登录桌面生成的。无论是 root还是普通用户登录桌面都会生成该进程且无法杀死。(无关紧要的进程可以 kill 掉)
- 尝试解决方法1:
rpm -ivh mate-indicators-20150918kord0ukui58-10.p01.ky10.x86_64.rpm --nodeps --force
- 如果rpm安装的时候报错 “无法从 /var/lib/rpm 打开软件包数据库”,重建下rpm库就行了,然后在安装补丁包
cd /var/lib/rpm
rpm --rebuilddb
- 尝试解决方法2:
- 注销掉该用户桌面,释放进程及内存,或通过
systemctl restart lightdm
重启图形化服务,释放内存。(已解决)
- 通过 vnc连接用户桌面,mate-indicators进程也会占用内存,可以通过 ps -ef |grep vnc,然后kill掉vnc进程释放内存解决。
- 降低降低 swappiness 的值,减少内存回收时 Swap 的使用倾向
sysctl vm.swappiness=10
echo "vm.swappiness=10">> /etc/sysctl.conf
vi /etc/sysctl.conf
sysctl -p
- 内核参数vm.swappiness控制换出运行时内存的相对权重,参数值大小对如何使用swap分区有很大联系。值越大,表示越积极使用swap分区,越小表示越积极使用物理内存。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存,而后才是 swap空间;swappiness=100的时候表示积极使用swap分区,并把内存上的数据及时搬运到swap空间