内存占用过高,缓存不释放导致死机处理方案

故障现象:

1、某分行部署的某台服务器内存占用过高,导致死机;
2、代码层面检查暂未发现问题,服务器硬重启持续一段时间后(3-5天)再次占满。

发现问题:

赶往现场后进行检查,当时是一切正常的,今有DB2进程占用18%,在正常范围内;
在crontab 中发现有两个脚本每天14点进行FTP批量数据传输,找到相应的传输文件存放目录发现每天传输的文件达到30多个G,由此可判断这就是故障之根本,FTP传输文件,会缓存到内存中,服务器内存也只有32G,FTP传输导致缓存被占满,Linux不能自动清理缓存导致死机。
Linux内存中缓存占用的空间是可以自动释放的,现在缓存占用了整个内存导致死机,肯定是没有自动释放缓存。

解决方法:

设定Linux内存参数,始终留出一块空间,以避免缓存不释放导致死机。

方案一:
可手动清理页文件缓存,但是需手动执行;

echo  1  >  /pron/sys/vm/drop_caches

方案二:
我们采用的方法是设定内存最低剩余内存,不让缓存占满
1.使用root用户备份/etc/sysctl.conf文件,准备修改原文件;
2.修改sysctl.conf配置文件
2.1 打开sysctl.conf

vim /etc/sysctl.conf

2.2 在文件最后加入一行:

vm.min_free_kbytes = 2097152
(命令意义:设置最小剩余内存,单位KB,这里设置2G)

2.3 保存退出。
3. 使配置文件生效

sysctl  -p

由于第一种方法属于直接清空缓存,可能会造成数据丢失,故在此生产环境我们选择的是方案二。

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

范一刀

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值