MYSQL SWAP满问题

 背景描述:

观察发现,有台MYSQL机器每天凌晨0:00-5:00间,SWAP都会增长(如图所示);虽然每天增长的不多,但日积月累,会逐步造成SWAP负载满的情况,从而引发OOM风险;所以要查明该原因;

 

 经查,0:00-5:00之间,内存抖动比较厉害,表明此间进行了SWAP OUT,导致内存增长;(下图是内存使用率,未算上cache)

 

内存使用率(包含cache) 

 

早上5:00前通过SWAP OUT 部分内存至SWAP,降低内存使用率,SWAP增大;白天的时候是正常使用CACHE;SWAP没有增长;而如果算上cache的话,内存使用率其实并不高;只有50%不到,在这种情况下缺用了2G多的SWAP,从历史数据看,基本每天增长50-200M的SWAP使用;

 查看慢查询日志,可以到每天凌晨0:40--4:50之间进行了对200个库进行统计,进行了创建大临时表操作,与研发沟通也确认每天凌晨会统计前一天的数据;但研发也确实需要改统计,那么如何解决这个问题;

理论上,该操作需要内存,但DB的内存都在cache中,db应该调用内核去清理脏页,空闲出的空间来做该计算 用;但实际上DB找内存,没有内存后进行了SWAP OUT,导致SWAP增长;

 给出2个建议:

1,echo 1 > /proc/sys/vm/drop_caches 清空page cache(page cache也被作为其它文件类型的缓存设备来用);通过这样手动释放cache,而后凌晨的计划计算任务就可以拥有内存来进行计算;

2, swapniess当前是10,将其修改为1(不要改为0,否则会造成swap还有很多,却发生OOM风险)

经测试:

第一个方法不适用,因为系统在无时无刻地进行写操作,刚释放的资源会被立马使用,导致物理内存资源瞬间地回升的现象;SWAP还是正常地上升;

 采用方法二,修改swapniess,观察发现SWAP没有继续增长了;

观察了几天,问题已解决; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值