TDSQL-C MySQL 版 内存利用率过高

TDSQL-C MySQL 版出现内存突增,内存持续增长不释放的情况。具体表现在实例监控的内存利用率监控图表中。

相关产品
TDSQL-C MySQL 版 产品页,含版本规格、价格与购买入口。

一、现象描述

注意:说明:

注意:可在监控告警页下查询实例的内存使用率情况。

注意:

在突增之后,或者长期缓慢增长的过程中,最终达到一个过高的水平(>96%),且在一定范围内小幅度变动,有可能会经常性的触发自定义的腾讯云可观测平台内存告警。

二、故障风险

低效的 SQL 语句或数据库参数设置不当都可能会导致内存利用率升高,遇到突发业务高峰时,可能会导致云数据库内存 OOM(Out Of Memory),当云数据库由于 OOM 导致不可用时,会触发主备切换,主备切换的过程中会导致业务在短时间内不可用,实例不可用的时长正常情况下不超过60秒。如果在业务高峰期发生了主备切换,则会严重影响业务的稳定和连续性。

三、解决思路

TDSQL-C MySQL 版的内存大体可以分为 global 级的共享内存和 session 级的私有内存两部分:

·共享内存是实例创建时即分配的内存空间,并且是所有连接共享的。

·私有内存用于每个连接到 TDSQL-C MySQL 版服务器时才分配各自的缓存。
一些特殊的 SQL 或字段类型会导致单个线程可能分配多次缓存,因此当出现 OOM 异常,都是由各个连接的私有内存造成的,通过限制数据库的连接数和优化低效 SQL,可降低内存利用率过高的风险,若 TDSQL-C MySQL 版的内存利用率依然过高,可通过升级内存配置来提升数据库的整体并发量和稳定性。

四、处理步骤

1. 优化慢 SQL,减少 session 级的私有内存使用量。可以通过 DBbrain 对慢 SQL 进行分析。

2. 减少无效的长连接,在不影响业务的情况下,降低程序侧的连接池配置或者降低程序侧的并发度。可以通过 DBbrain 查看当前会话信息。

3. 监控内存使用情况(可选):开启 performance_schema 的内存监控功能,需要开启 performance_schema 后,在 performance_schema 库中查询名字为 memory_summary 开头的表来得知内存使用情况,例如,全局维度的内存利用率分析表:memory_summary_global_by_event_name。

4. 优化完成之后的手段:调整计算配置 和 调整存储空间

注意:说明:

赞 (0)
上一篇 4天前
下一篇 4天前