mysql数据库内存使用率持续增长不释放解决方案

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

mysql数据库内存使用率持续增长不释放解决方案

一 问题

mysql数据库内存持续增长至90%以上,且不释放。最终导致mysqld进程oom。

二 解决方案

优化参数innodb_buffer_pool_size

限定mysql参数innodb_buffer_pool_size不超过mysql数据库服务器物理内存的40%

优化sessionbuffer参数值

read_buffer_size = 4M

read_rnd_buffer_size = 4M

sort_buffer_size = 4M

join_buffer_size = 4M

tmp_table_size = 32M

max_heap_table_size = 32M

优化参数key_buffer_size

检查mysql数据库MyISAM引擎,key_buffer_size只对MyISAM表起作用。

show engines;

优化参数key_buffer_size的值

key_buffer_size = 16M

内存碎片回收

调用glibc申请的内存使用完毕后,归还给OS时没有被正常回收变成了碎片。随着碎片的不断增长,就能看到mysqld进程占用的内存不断上升。这时候可以调用函数主动回收释放这些碎片。

[root@mysql#] top

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

49117 mysql     20   0   28.4g    25g   8400 S  48.5 81.4  64:46.82 mysqld

[root@mysql#] gdb --batch --pid `pidof mysqld` --ex 'call malloc_trim(0)'

[root@mysql#] top

PID USER      PR  NI    VIRT    RES    SHR  S  %CPU %MEM     TIME+ COMMAND

49117 mysql     20   0   28.4g    5.2g   8288 S  2.7  17.0  64:56.82 mysqld

内存碎片整理类似在InnoDB表中产生太多碎片后,主动执行 OPTIMIZE TABLE 重建表的做法。

monitor慢日志里的慢sql优化

建议mysql数据库更换成企业版

mysql企业版数据库,在数据库内存回收机制这方面做了较大的改进。可以有效改善数据库的内存溢出问题。





mysql数据库内存使用率持续增长不释放解决方案

一 问题mysql数据库内存持续增长至90%以上,且不释放。最终导致mysqld进程oom。二 解决方案优化参数innodb_buffer_pool_size限定mysql参...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息