对mysql做压力测试,测试完之后,mysql的内存一直不下降
$ free -m
total used free shared buff/cache available
Mem:
Swap:
# top -u mysql top - :: up days, :, users, load average: 0.00, 0.85, 2.93
Tasks: total, running, sleeping, stopped, zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : +total, free, +used, buff/cache
KiB Swap: total, free, used. avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
mysql .154t .102t S 0.0 82.9 : mysqld
使用了0.102*1024=104G,需要0.154*1024=157G,buffer_pool占用了80G,一直不释放,调整buffer_pool_size到70G
mysql> show variables like '%pool_size%';
+-------------------------+-------------+
| Variable_name | Value |
+-------------------------+-------------+
| innodb_buffer_pool_size | |
+-------------------------+-------------+
row in set (0.00 sec) mysql> select ***;
+-------------------+
| *** |
+-------------------+
| |
+-------------------+
row in set (0.00 sec) mysql> set global innodb_buffer_pool_size=;
Query OK, rows affected (0.01 sec)
调整后,内存立即就释放了;free和available两项都有增加
$ free -m
total used free shared buff/cache available
Mem:
Swap:
之后又调整buffer_pool_size到80G,发现mysql占用的内存又慢慢上来了,看来mysql的buffer_pool_size会占用固定的内存大小。最后将buffer_pool_size设置为了物理内存的一半。