1.环境说明
OS:RedHat 6.2 x86_64
DB:MySQL 5.6.16
服务器:Vmware ESX
虚拟机资源: 2*6C,32G Mem,6G swap
2.问题现象
MySQL内存持续增加,最高时物理内存消耗28-29g,导致swap使用率100%,进而造成内存不足,系统自动kill mysql进程。
OS的syslog日志如下:
3.MySQL内存消耗过高分析与处理
MySQL的内存消耗分为:
1.会话级别的内存消耗:如sort_buffer_size等,每个会话都会开辟一个sort_buffer_size来进行排序操作
2.全局的内存消耗:例如:innodb_buffer_pool_size等,全局共享的内存段
其中170的数据库的全局内存消耗很稳定,没有出现增加的现象,那么会话级的内存消耗可能是一个主因。
关于会话级的内存消耗解释如下:
read_buffer_size, sort_buffer_size, read_rnd_buffer_size, tmp_table_size这些参数在需要的时候才分配,操作后释放。
这些会话级的内存,不管使用多少都分配该size的值,即使实际