关于服务器频繁内存警告问题记录
问题
【阿里云监控】华南1(深圳)-云服务器ECS服务器于08:49 恢复正常, 持续时间7小时3分钟
这几天经常半夜收到阿里云的内存警告信息;今天有时间去检查下服务器,发现buff/cache的数据很异常;
查看如下(free):
total used free shared buff/cache available
Mem: 16268220 7333368 544156 616 8390696 8571076
Swap: 0 0 0
Mem: 服务器内存
- total 服务器总内存大小
- used 已经使用的内存大小
- free 空闲的内存大小
- shared 多个进程共享的内存总额
- buffers 设备数据缓存,记录文件系统metadata(目录、权限、属性等)
- cache 文件内容的缓存
- available 还可以使用的物理内存大小
swap:交换空间,当swap值大于0时,表明内存不够,需考虑增加物理内存
原因
- 服务器部署的服务每天都在不停的访问着服务对日志文件的操作比较频繁、对于服务器文件资源的操作(修改配置文件、上传删除文件等),在我们每次操作完后,系统并不会释放文件内存而是会缓存起来方便我们下次进行操作;虽然对于文件操作效率大大提升但是对于云服务器的内存消耗不小
解决方法
查看服务器缓存释放机制
cat /proc/sys/vm/drop_caches
0
drop_caches的值可以是0-3之间的数字,代表不同的含义:
- 0:不释放(系统默认值)
- 1:释放页缓存
- 2:释放dentries和inodes
- 3:释放所有缓存
怎么释放服务器磁盘缓存
echo 1 > /proc/sys/vm/drop_caches
再次查看服务器内存情况(free -h):
total used free shared buff/cache available
Mem: 15G 7.0G 7.9G 616K 603M 8.2G
Swap: 0B 0B 0B
总结
- 养成定时查看分析服务器的带宽、内存等系列指标,及时作出相应;不单单只关注业务需求
- 全方面的分析,就拿这次来说,我们单从used使用的内存来看并不能看出啥问题来
- 服务器的各项指标预警还是必须的