一般有如下几种可能:
1) 有程序占用大量CPU,使用top命令来检查(看看是否有java程序锁死之类的故障)
2) 有程序占用大量内存,使得内存真正不够用了(这个才是真正需要加内存的时候),比如由于MySQL在较大负载下运行容量为GB级别的数据库导致内存不够用,需要给服务器插入更多物理内存
3) 磁盘系统读写故障,IO吞吐错误造成CPU负载上升,需要光盘引导进入单用户模式扫描修复磁盘。
但也可以手动进行内存释放,具体 *** 作如下:
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches0
首先,/proc/sys/vm/drop_caches的值,默认为0
[root@dbserver01 mysql]# sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行 sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件) 《Linux就该这么学》 一起学习。
[root@dbserver01 mysql]# echo 3 >/proc/sys/vm/drop_caches
[root@dbserver01 mysql]# cat /proc/sys/vm/drop_caches
3
将/proc/sys/vm/drop_caches值设为3 [root@dbserver01 mysql]# free -m
1. 使用top 查看内存的占用情况,然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)2.关闭掉不需要的进程,
3.再使用top查看内存占用情况,发觉内存占用率已经降下来了,但是free -h却还有100G被占用(内存总共128G),vmstat发现是cache 占用了大量内存。
4. 使用 echo 1 >/proc/sys/vm/drop_caches 释放缓存
常用的释放缓存的命令如下
To free pagecache:仅清除页面缓存(PageCache)
echo 1 >/proc/sys/vm/drop_caches
To free dentries and inodes:清除目录项和inode
echo 2 >/proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:清除页面缓存,目录项和inode
echo 3 >/proc/sys/vm/drop_caches
5.再使用free -h 查看内存使用情况,发现内存使用情况已经正常了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)