NUMA导致的MySQL服务器SWAP问题分析与解决方案

栏目: 数据库 · 发布时间: 8年前

内容简介:先从swap产生的原理来分析,由于linux内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解:1、swap是如何产生的swap指的是一个交换分区或文件,主要是在内存使用存在压力时,触发内存回收,这时可能会将部分内存的数据交换到swap空间。

【SWAP产生原理】

先从swap产生的原理来分析,由于 linux 内存管理比较复杂,下面以问答的方式列了一些重要的点,方便大家理解:

1、swap是如何产生的

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

2、内存回收的机制

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

<2>当内存分配没有足够的空间时,直接内存回收。

3、内存回收如何实现

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

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

4、讲几个重要的概念

<1>内存节点node,在NUMA的情况下,CPU访问不同位置的内存,会有本地内存和远端内存之分,这两个就是不同的节点。

<2>内存分区 zone,linux对内存节点做了进一步划分,将一个节点划分为不同的区。内存管理的逻辑以zone为单位。

<3>内存水位标记,分为high、low、min

通过下图可以比较直观的了解

NUMA导致的 <a href='https://www.codercto.com/topics/18746.html'>MySQL</a> 服务器SWAP问题分析与解决方案

5、内存回收行为

<1>当系统剩余内存低于low时,kswapd开始起作用进行内存回收,直到内存达到high水位。

<2>当剩余内存达到min时就会触发直接回收。

<3>当触发全局回收,并且file+free<=high时,一定会进行针对匿名页的swap。

下面举例:

在数据库做全备份时cache大量使用,剩余可用空间不足,触发内存回收,

NUMA导致的MySQL服务器SWAP问题分析与解决方案

上图是/proc/zoneinfo的部分内容,可以看到满足了file+free<=high的条件,同一时间触发了swap,将内存匿名页的数据写入交换区

NUMA导致的MySQL服务器SWAP问题分析与解决方案

有大量的文件页cache,为什么会出现file+free<=high的情况,分析下来全备文件缓存时,node 0的nr_inactive_file很低,大部分非活动的文件页都分布在node 1上,是由于开启NUMA导致的。

【关闭NUMA的方案】

1、 在mysqld_safe脚本中加上“numactl –interleave all”来启动mysqld

2、 Linux Kernel启动参数中加上numa=off,需要重启服务器

3、 在BIOS层面关闭NUMA

4、 MySQL 5.6.27/5.7.9开始引用innodb_numa_interleave选项

对于2、3、4关闭NUMA的方案比较简单,不做详细描述,下面重点描述下1方案

【开启numa interleave访问的步骤】

1、 yum install numactl -y

2、修改/usr/bin/mysqld_safe文件

cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS"下新增一条脚本

cmd="/usr/bin/numactl --interleave all $cmd"

NUMA导致的MySQL服务器SWAP问题分析与解决方案

3、service mysql stop

4、#写入硬盘,防止数据丢失

sync;sync;sync

5、#延迟10秒

sleep 10

6、#清理pagecache、dentries和inodes

sysctl -q -w vm.drop_caches=3

7、service mysql start

8、验证numactl –interleave all是否生效,可以通过下面命令,interleave_hit是采用interleave策略从该节点分配的次数,没有启动interleave策略的服务器,这个值会很低

numastat -mn -p `pidof mysqld`

NUMA导致的MySQL服务器SWAP问题分析与解决方案

Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址: https://www.linuxidc.com/Linux/2018-10/154976.htm


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

How to Solve It

How to Solve It

Zbigniew Michalewicz、David B. Fogel / Springer / 2004-03-01 / USD 59.95

This book is the only source that provides comprehensive, current, and detailed information on problem solving using modern heuristics. It covers classic methods of optimization, including dynamic pro......一起来看看 《How to Solve It》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具