一、查看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空间