Linux OOM机制&线上osd异常kill

一 引言

某日早上收到邮件告警信息,上报pg stale以及recovery信息,于是登录系统运维。

二 排查&解决

登录系统后发现系统已恢复正常,按照正常来讲并无影响,但系统既已出现recovery信息意味着一定有osd down发生。于是排查osd日志,发现某osd上报心跳问题。

登录到所在osd  查看osd日志,并无对应错误,但osd进程莫名其妙重启了。

查阅进程验证

意外发现大量osd进程出现重启的问题,怀疑是触发了操作系统某种机制导致进程被kill。查看osd日志,发现在进程退出时,基本上都是leveldb的日志,因为leveldb是一个内存磁盘数据库,怀疑是不是在做某种动作时出现内存不足的情况,于是验证dmesg信息,发现果然如此。

此时查看内存使用情况,发现free -g中已有swap分区被使用,另外buff+cache使用量很大。从Linux内存管理机制来讲,当有程序申请内存时,操作系统应该会逐步释放内存空间,不应会出现内存不足情况。(疑惑)

查阅部分资料,有这样一段话

Linux下允许程序申请比系统可用内存更多的内存,这个特性叫Overcommit。这样做是出于优化系统考虑,因为不是所有的程序申请了内存就立刻使用的,当你使用的时候说不定系统已经回收了一些资源了。不幸的是,当你用到这个Overcommit给你的内存的时候,系统还没有资源的话,OOM killer就跳出来了。

怀疑是否是出现了buff/cache未及时释放导致OOM机制触发,为了避免这个问题,在对系统IO进行评估后,采用手动清缓存的办法释放资源,避免出现内存不足的情况。另外,因所配内存足够,调整了swap分区参数,尽量避免使用swap分区导致性能下降。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值