释放linux缓存 echo 1 > /proc/sys/vm/drop_caches
购买的云主机(1核2G,Debian系统)安装了docker。docker中运行着六七个服务(包括几个微服务项目和mysql,redis,nginx等),之前启动一直好好的,偶尔一天,不知什么原因,系统需要重启,当我手动启动docker的时候,几秒钟的时间内存和cpu立马撑爆了,并且服务器处于假死或者说宕机状态。也无法登录,连云厂商的后台监控都丢失了cpu和内存的监控数据。服务器重启之后,正常,但
1、背景
购买的云主机(1核2G,Debian系统)安装了docker。docker中运行着六七个服务(包括几个微服务项目和mysql,redis,nginx等),之前启动一直好好的,偶尔一天,不知什么原因,系统需要重启,当我手动启动docker的时候,几秒钟的时间内存和cpu立马撑爆了,并且服务器处于假死或者说宕机状态。也无法登录,连云厂商的后台监控都丢失了cpu和内存的监控数据。
服务器重启之后,正常,但是只要一启动docker就再次假死,怎么回事?之前一直好好的呀
2、解决
进过多次重启尝试无果后,仔细查看了一下内存free -m
发现used与free占比很少,大量内存被buff/cache占据。因此,需要释放buff/cache的内存,将其变成free的。使用下面的命令:
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义: 0:不释放(系统默认值) 1:释放页缓存 2:释放dentries和inodes 3:释放所有缓存
详细内容可以查看下面这篇知乎
https://zhuanlan.zhihu.com/p/459398220
经过这样一番解决,启动docker总算正常了。同时,由于服务器的内存太小(主要是没钱),所以还可以降低性能,通过磁盘空间扩充内存,主要是使用swap,如下图是扩充后的结果
详细内容可以参考这篇博客:https://blog.csdn.net/qq_44625080/article/details/110203173
注意
如果Permission denied。是因为权限不够,我们只是让echo有root权限,没有让">"命令也有root权限。这时使用下面:
sudo sh -c 'sync && echo 1 > /proc/sys/vm/drop_caches'
sudo sh -c 'sync && echo 2 > /proc/sys/vm/drop_caches'
sudo sh -c 'sync && echo 3 > /proc/sys/vm/drop_caches'
更多推荐
所有评论(0)