云数据库虚拟主机(云服务器云虚拟主机)
175
2022-09-17
MySQL数据库频繁出现OOM问题该如何化解(oom的原因和解决方法)
公司一些数据库开始出现不规律的OOM( “out of memory” ,超出内存空间,即内存不足。),好几次出现业务不可用场景,而且时长都超过半小时,莫着急,小编今天带您快速了解,MySQL数据库频繁出现OOM问题该如何化解。
大神:你把7天以内的内存使用历史记录说一下。
小明:这7天的内存持续增高。
大神:首先,你使用MySQL自身提供的performance_schema,分析哪块内存区域消耗最大且持续增长;
其次,看看最 近是否有业务变更,以及新模块涉及的语句是什么。
小明:大神,根据你的建议,我们找到一个重大突破口,发现这么一个问题:表数量较大(1w+),innodb memory
持续增长,慢语句中发现大量重复频繁元数据查询语句。
大神:自建数据库绝大部分环境都会忽略掉一个设置,即内存管理器使用系统自带的glibc库,在一些情况下内存存在持续增长并达到最大值,而且很长时间内不会释放一个潜在问题。如果表数量较大,且频繁查询元数据会造成内存
碎片无法及时清理,并最终导致系统出现OOM。
小明:纳尼,还有这种情况,我这就去查查。出问题的数据库确实是这么一个组合: MySQL数据库某分支版本+安装采用系统自带内存管理器+一个新模块上线+不定期的查询元数据,综合导致了OOM问题。
它不是简单的将数据库服务化,而是采用了jemalloc内存管理器,不存在内存回收问题,且内存管理性能更优;
同时内核对innodb_buffer_pool_size进行了内控,可以避免用户设置超过实际物理内存的失误,这也是数
据库稳定背后的一个细节体现。
小明:听起来很腻害的样子!我得赶紧试一下。
大神:数据库将操作系统、数据库版本、数据库默认设置、内核优化形成一个最优组合呈现给用户,让用户即开
即用,简单省心。就像4s店提车一样,可以立马上路。
小明:问题已解决,客户系统运行稳定,数据库MySQL真牛!不过,是否还会有复发的风险呢?
大神:数据库MySQL会给用户提供合理的默认设置,但OOM的另外一个关键在于“怎么用”,这里我给你一个
锦囊妙计,你可以根据以下公式来推算和配置数据库合适的总内存,这样就可以避免OOM问题。
小明:太好了,以后可以少加班了。
大神:认准数据库MySQL,化解OOM不在话下,高效安全又可靠。
发表评论
暂时没有评论,来抢沙发吧~