问题:TDSQL 监控库内存使用率达 173%
解析:
实例内存= buffer_pool + performance_schema引擎的内存 + session内存(包含临时表内存)
buffer_pool tdsql默认配置为实例规格内存的100% (原生mysql为75%)
performance_schema引擎的内存(经验值) = 4-6G
session内存和临时表内存根据连接数不同分配的也不同,监控库的连接数比较稳定,初步估算为 4G
TDSQL集群监控库内存规格为8G,最大使用内存范围大致为 8+4+4=16G 到 8+6+4=18G ,内存使用率预估为 16/8 = 200% 到 18/8 = 225% ,目前 173% 的使用率还属于正常范围内。
理论上,下调 buffer_pool 值可以降低内存使用率,但这对TDSQL来说是一个非标操作,对性能有影响,也可能产生其他异常问题,建议按规则计算使用率范围,调整报警阈值。
相关语句:
SELECT SUBSTRING_INDEX(event_name,'/',2) AS code_area, sys.format_bytes(SUM(current_alloc)) AS current_alloc
FROM sys.x$memory_global_by_current_bytes GROUP BY SUBSTRING_INDEX(event_name,'/',2) ORDER BY SUM(current_alloc) DESC;