mysql 关闭numa_关闭NUMA

本文探讨了MySQL因NUMA导致的OOM问题,解释了swap分区的作用、内存回收机制以及swappiness参数对swap使用的影响。介绍了关闭NUMA的方法,包括在操作系统级别设置numa=off以及在MySQL配置中设置innodb_numa_interleave参数。同时,文章提供了调整swappiness值以优化内存使用,避免过度依赖swap空间的步骤,并警告在CentOS7中设置swappiness为0可能存在的问题。
摘要由CSDN通过智能技术生成

今天朋友告知他的库因为numa的原因导致OOM了,趁着这个话题就来操作一把测试库的numa。

关于swap(摘自网络)

swap是如何产生的

swap指的是一个交换分区或文件,主要是在内存使用存在压力时,触发内存回收,这时可能会将部分内存的数据交换到swap空间

内存回收的机制

①Linux内核使用cache对部分文件进行缓存,提升文件读写效率。所以 引入了kswapd进程进行周期性检查,保证剩余内存空间

②当内存分配没有足够的空间时,直接内存回收

内存回收如何实现

这部分实现非常复杂,简单来说,内存回收操作主要针对内存的文件页和匿名页,这些页都通过LRU链表来管理。

其中anon的匿名页内存主要回收手段是swap,文件页释放方式是写回和清空

关于swappiness(摘自网络)

swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60

简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性

关于numa(摘自网络)

numa主要是和swap有关

numactl --hardware

ecd43c987711

ecd43c987711

ecd43c987711

当发现numa_miss数值比较高时,说明需要对分配策略进行调整。例如将指定进程关联绑定到指定的CPU上,从而提高内存命中率

操作部分

关闭numa

在操作系统中关闭,可以直接在/etc/grub.conf的kernel行最后添加numa=off,如下所示:

kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=VolGroup/root rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=VolGroup/swap rhgb crashkernel=auto quiet KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM  numa=off

ecd43c987711

此外在mysql版本5.6.27/5.7.8以后,可以在cnf里配置innodb_numa_interleave参数,将其设置为ON

ecd43c987711

查询当前swappiness的设置值

[root@zjk ~]# cat /proc/sys/vm/swappiness

60

查询当前swap使用情况

ecd43c987711

清空swap(执行swapoff -a;swapon -a)

ecd43c987711

ecd43c987711

重新设置swappiness值

vim /etc/sysctl.conf;  设置vm.swappiness=0

ecd43c987711

使该设置生效

sysctl -p

ecd43c987711

来看一下更改前后vmstat中swap的变化

ecd43c987711

改完swappiness之后

ecd43c987711

注意:在CentOS7中最好不要把swappiness设置成0,会有问题,设置成5-10即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值