找到MySQL服务器发生SWAP罪魁祸首好了,现在我们已经基本明确mysqld进程是因为内存泄露,导致消耗大量内存,最终被oom-kill了。那么,我们如何知道mysqld进程究竟什么原因消耗掉内存的,都用哪里去了呢?还好,MySQL 5.7的P_S(performance_schema的简称)集成了这样的功能,能帮助我们很方便的了解这些信息。因此我们执行下面的SQL,就能找到MySQL里到底谁消耗了更多内存:yejr@imysql> select event_name,SUM_NUMBER_OF_BYTES_ALLOC from
memory_summary_global_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc LIMIT 10;
[1499150272845_5055_1499150272187.jpg]
图3我们注意到 “memory/innodb/mem0mem” 消耗的内存最大。再执行下面的SQL,查看都有哪些内部线程消耗了更多内存:yejr@imysql>select event_name, SUM_NUMBER_OF_BYTES_ALLOC from
memory_summary_by_thread_by_event_name
order by SUM_NUMBER_OF_BYTES_ALLOC desc limit 20;
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。