MySQL内存占用100%,是正常的?

2022-06-01 18:39:41 浏览数 (2)

【问题表现】

某项目压测后发现qps达标,服务器cpu和内存占用均在70%以下,然而mysql服务的内存占用高达100%,且并没有因为压测而产生波动。

【问题排查】

1、查看mysql内存配置

MySQL内存配置为8G,共享内存5G,私有内存3G。共享内存是实例创建时就分配的内存空间,所有连接是共享的;私有内存是用于连接mysql服务器时才分配各自的缓存。)

2、查看连接数

如图所示,长连接数接近500。

运维同学回复这个数量不算多,属于正常范围。

3、查看慢查询

运维同学反馈没有查到慢查询数。

4、查看未压测时mysql的内存占用

1)经运维查看监控,压测前没有业务请求进入时,mysql的内存使用率就达到了60%左右;

2)链接池服务启动后,内存占用就已经达到了98%;

3)压测并发进入后就达到了100%

【解决思路】

1、减少无效的长连接,在不影响业务的情况下,降低程序侧的连接池配置或者降低并发度:查看卡特长连接数为400多,运维侧觉得这个数量不算多,属于合理范围内。并且并发度高是因为做压测,因此该解决方案不可行。

2、优化慢SQL:运维并未查看到慢查询记录,因此该解决方案不可行

3、升级内存配置:该项目UAT环境与线上环境是1:1配置,没有充分理由不能随意升配,因此该解决方案不可行

【最终结论】

我们最关注的事情是:mysql内存占用100%的情况下,对性能有什么影响??最终结论是该种情况为正常的有以下原因

原因1:运维侧咨询了腾讯云助手,了解了mysql内存占用100%这个现象是正常的。

原因2:

运维根据腾讯云助手的建议,查看了缓存命中率是处于高水位且使用率变化不明显,不需要进行扩容,可以继续使用。

原因3:

在mysql内存持续100%的情况下,压测多个接口qps均达标,也并未出现其他报错。

【总结】

1、腾讯云平台相关组件的知识可咨询腾讯云助手或者官网文档

2、对mysql服务的监控更多集中在cpu占比、慢查询、长连接等。

参考文档:https://cloud.tencent.com/document/product/236/54792

0 人点赞