解决linux buffer/cache 消耗内存过高引发的问题

  • 工作中接到DBA报障某台服务器 跑一些大的数据,服务器就无法远程连接,报错,抓过日志叫DELL工程师检测也没问题,系统也重装过,
    现在些一些较大的数据就会报如 图错误,由于服务器远在异地城市IDC机房,ssh也无法登录,于是使用iDRAC 远程管理卡连接到该台机器,通过控制台连接到服务器,看到如下图报错:
  • 1、内存占用量:dd过程内核会用大量内存作为磁盘数据的缓存,由于写入8.5T;

  • 2、从设备来看,内存主要消耗在buff中:

  • 3、dd if=/dev/zero of=/data$i/test bs=1M count=9000000 conv=fdatasync &
    参数fdatasync作用 :
    1)保证数据刷新到磁盘、
    2)没有把文件元数据刷到磁盘中;由于特性2)造成buff占用量激增;
    具体可参考:http://www.2cto.com/os/201205/131568.html

  • 4、通过echo 3 > /proc/sys/vm/drop_caches,即可清空buff/cache,目前此设备内存已恢复正常;

sar -r -f /var/log/sa/sa17
内存使用量激增。通常情况下,是由于业务程序导致的。

posted @ 2017-06-20 19:41  kevinslee  阅读(2523)  评论(0编辑  收藏  举报