应先用 ps 或 pmap 查 mysqld 进程 RSS 内存,而非仅调大 innodb_buffer_pool_size;RSS 超物理内存 80% 或远超配置参数总和时,需排查连接泄漏、临时表滥用、performance_schema 开销等隐性内存消耗。查 mysqld 进程实际内存占用,别只看 SHOW VARIABLESMySQL 报 Out of memory 时,很多人第一反应是调大 innodb_buffer_pool_size,结果反而更早崩。真实内存消耗不只来自这个参数------mysqld 进程的 RSS 内存可能远超所有"可配置内存参数"之和。真正该先做的,是用系统命令看进程实占:ps -o pid,rss,vsz,comm -C mysqld 或 pmap -x $(pgrep mysqld)。RSS 超过物理内存 80% 就危险;若 RSS 比 innodb_buffer_pool_size + key_buffer_size + sort_buffer_size * max_connections 大出一倍以上,说明有隐性内存泄漏或连接数失控。每个连接独占 sort_buffer_size、read_buffer_size、join_buffer_size 等线程级缓冲区,max_connections = 1000 且 sort_buffer_size = 4M 就可能吃掉 4GBtmp_table_size 和 max_heap_table_size 控制内存临时表上限,但没设限的查询(如没加 LIMIT 的 GROUP BY)会把整张中间结果塞进内存开启 performance_schema 后,尤其在高并发下,其内部结构本身会吃掉几百 MB,且无法通过 SQL 关停定位触发 OOM 的具体查询:从 slow_query_log 到 performance_schema不是所有慢查询都吃内存,但吃内存的查询往往很慢,而且 Rows_examined 极高。关键要区分:是单条大查询撑爆内存,还是大量小查询累积耗尽。打开 slow_query_log 并设 log_queries_not_using_indexes = ON,同时重点看 long_query_time = 0(记录所有查询),再配合 pt-query-digest 分析 Rows_examined 和 Tmp_tables 字段。如果某类查询频繁出现 Using temporary; Using filesort 且 Rows_examined > 1e6,基本就是内存黑洞。启用 performance_schema 后,查 performance_schema.memory_summary_by_thread_by_event_name 可看到各线程内存分配峰值,注意 EVENT_NAME LIKE '%memory%' 的行information_schema.PROCESSLIST 中 State 为 Creating tmp table 或 Copying to tmp table 的连接,正在用内存建临时表避免在 WHERE 或 JOIN 条件中对字段用函数(如 DATE(create_time)),这会让索引失效,强制全表扫描+内存排序innodb_buffer_pool_size 不是越大越好,Linux 的 vm.swappiness 会暗中捣鬼设 innodb_buffer_pool_size = 70% RAM 是常见建议,但在容器环境或混部机器上极易翻车。InnoDB 缓冲池是 mmap 分配的匿名内存,Linux 内核不会优先把它换出,而其他进程(比如 Python 应用)的堆内存却容易被 swappiness 换出,导致 MySQL 看似"空闲"却因系统级 swap 延迟卡死。 灵办AI 免费一键快速抠图,支持下载高清图片
相关推荐
SamChan903 分钟前
用Python+Requests批量翻译PDF:从脚本到调度草莓熊Lotso4 分钟前
【LangChain】核心技术:嵌入模型与向量存储完全指南2501_937860941 小时前
MySQL表的操作:创建、查看、修改、删除完整实战奇特認5 小时前
mysql 集群技术 3.高可用之 MHABioinfo Guy8 小时前
高分Panel复现系列|转录因子网络太乱?用模块框把重点圈出来leisoo80978 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比WangYan20228 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别ltl9 小时前
Disaggregated DB 合集:Socrates、PolarDB、Taurus 的共同模式金銀銅鐵10 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》Blossom i11 小时前
大数据预处理与采集实验一:使用Python操作MySQL数据库