前言
一次巡检过程中发现数据库使用内存有些过量,innodb_buffer_pool_size 设置值为 20G ,但实际物理内存消耗为 37G ,总虚拟内存消耗达 42G ,直接导致监控报警,于是开启了一次内存使用探究之旅,整理出来和大家分享一下
概要
发现问题
巡检过程中发现mysql内存使用过量
下面是 top 出来的信息,只截取了关键部分
代码语言:javascript复制 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
14769 mysql 15 0 42.1g 37g 4792 S 58.1 79.5 25660:41 mysqld
innodb_buffer_pool_size 只设定了 20G
代码语言:javascript复制[root@abc ~]# grep innodb_buffer_pool_size /etc/my.cnf
innodb_buffer_pool_size = 20G
[root@abc ~]#
加上其它七七八八的参数总量也绝不会超过25G,那怎么会有那么大的差距呢?