使用服务器时感觉到明显卡顿,输入free -h
命令查看内存占用
[root@shanghai mysql8] free -h
total used free shared buff/cache available
Mem: 1.8G 846M 108M 29M 882M 772M
Swap: 0B 0B 0B
当你的服务进程在对文件进行读写的时候,Linux内核为了提高服务的读写速度,则将会把文件放在此处的 buffer/cache 中进行缓存使用,
由于 Linux服务的特点便是任何事物都会以文件的形式进行存在,所以你会发现不管你是否对文件做了大规模的读写,
机器的 buffer/cache 是一直都存在的,并且持续的增高不下,这是因为服务器所产生的网络连接也好,
用户协议的(UDP)套接字也好,这部分的数据系统都会为应用程序创建对应的文件描述符,
而这些文件描述符的使用,则又都会重新进入 buffer/cache 中做读写使用,所以这也是你的机器始终都会存在较高 buffer/cache 的原因
简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
# 将所有未写的系统缓冲区写到磁盘中
sync
# 清除page cache
echo 1 > /proc/sys/vm/drop_caches
# 清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
echo 2 > /proc/sys/vm/drop_caches
# 清除pagecache和slab分配器中的缓存对象。
# /proc/sys/vm/drop_caches的值,默认为0
echo 3 > /proc/sys/vm/drop_caches
输入free -h
命令查看内存占用
[root@shanghai mysql8] free -h
total used free shared buff/cache available
Mem: 1.8G 847M 812M 29M 177M 810M
Swap: 0B 0B 0B