=============================================================

NUMA(Non-Uniform Memory Access),非一致性内存访问
NUMA服务器的基本特征是具有多个CPU模块,每个CPU模块由多个CPU(如4个)组成,并且具有独立的本地内存、I/O槽口等。由于其节点之间可以通过互联模块(如称为Crossbar Switch)进行连接和信息交互,因此每个CPU可以访问整个系统的内存(这是NUMA系统与MPP系统的重要差别)。显然,访问本地内存的速度将远远高于访问远地内存(系统内其它节点的内存)的速度,这也是非一致存储访问NUMA的由来。
利用NUMA技术,可以较好地解决原来SMP系统的扩展问题,在一个物理服务器内可以支持上百个CPU。但NUMA技术同样有一定缺陷,由于访问远地内存的延时远远超过本地内存,因此当CPU数量增加时,系统性能无法线性增加。

=============================================================

查看CPU和MUMA的拓扑信息

numactl --hardware

上面是2U服务器,配置64G内存

=============================================================

MySQL与NUMA问题

在单实例的MySQL服务器上,通过会为MySQL的Buffer Pool分配50%至70%甚至更高的内存,让MySQL 服务会尽可能多地占用系统资源。在基于NUMA系统中,内存被分配到各NUMA节点上,系统的默认为进程分配该进程所在NUMA节点的内存,而数据库应用又希望使用到所有CPU节点和内存,由于MySQL对NUMA支持不是很完善,在特殊场景中容易出现系统拥有空闲内存但发生SWAP导致性能问题的情况。

如对于2个NUMA节点64GB内存的MySQL服务器来说,为MySQL Buffer Pool配置48GB的内存,在默认NUMA策略下,会存在以下问题:
1、节点0和节点1的内存分配不平衡,内存会优先分配给节点0,节点1被用于备份,如:

2、当属于节点0的内存完全分配给节点0,如果位于NODE0上的进程调度需要大量内存,尽管节点1仍有大量空闲物理内存,也不会将NODE1上的内存分配给该进程使用,由于节点0已无空闲内存,因此会导致NODE0上部分内存被SWAP到磁盘上,引发性能问题。

=============================================================

为MySQL关闭NUMA

在MUMA架构下,虽然访问其他节点内存的性能低于访问本地节点内存,但并不是导致性能问题的主要原因,为解决系统存在空闲内存而部分NUMA发生SWAP操作的问题.

解决方式:

1、在BIOS层关闭NUMA
2、在Linux Kernel启动参数中加上numa=off(这样也会影响到其他进程使用NUMA);
3、在mysqld_safe脚本中加上“numactl –interleave all”来启动mysqld。

参数--interleave=nodes用于设定内存的交织分配模式,即系统在为多个节点分配内存空间时,将以轮询分发的方式分配给多个节点,如果当前众多的交织分配内存节点中的目标节点无法正确地分配内存空间的话,内存空间将会由其他节点来分配。

修改后MySQL内存分配如:

=============================================================

参考资料:
http://mysql.taobao.org/monthly/2015/07/06/
http://linux.51yip.com/search/numactl
http://sohulinux.blog.sohu.com/181968823.html
http://imysql.com/2016/11/30/mysql-faq-find-who-cause-mysql-swap.shtml?utm_source=tuicool&utm_medium=referral

=============================================================

MySQL--NUMA与MySQL的更多相关文章

  1. numa对MySQL多实例性能影响

     numa对MySQL多实例性能影响,通过对numa将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存.具体测试如下:1.关闭numa(numa= interle ...

  2. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  3. Ubuntu彻底删除MySQL然后重装MySQL

    删除 mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo apt- ...

  4. Navicat for mysql 远程连接 mySql数据库10061、1045错误

    原文地址:http://www.111cn.net/database/mysql/46377.htm 有朋友可能会碰到使用Navicat for mysql 远程连接 mySql数据库会提示10061 ...

  5. 利用JDBC连接MySQL并使用MySQL

    driver为JDBC的驱动. url为数据库的地址. usrname和password分别为数据库的用户名和密码. Connection类用来连接MySQL. PreparedStatement类用 ...

  6. 对于新安装的MySQL如何提升MySQL的安全级别

    一 作为最流行的开源数据库引擎,MySQL本身是非常安全的.即便如此,你仍然需要添加额外的安全层来保护你的MySQL数据库不受攻击,毕竟任何经营网上在线业务的人都不想冒数据库受到损坏的风险.接下来,我 ...

  7. MySql安装与MySQL添加用户、删除用户与授权

    1.安装MySql       目前MySQL有两种形式的文件,一个是msi格式,一个是zip格式的.msi格式的直接点击setup.exe就好,按照步骤进行.但是很多人下了zip格式的解压发现没有s ...

  8. Mysql-报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost

    报错:1130-host ... is not allowed to connect to this MySql server   解决方法: 1. 改表法. 可能是你的帐号不允许从远程登陆,只能在l ...

  9. MySQL监控系统MySQL MTOP的搭建(转VIII)

    MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统.系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理.最重要是MySQL服务器无需安装任何Agent,只 ...

  10. 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost

    执行如下命令报错 mysql -uroot -h${hostIp} -p Enter password:********* ERROR (HY000): Host '$hostIp' is not a ...

随机推荐

  1. Java面向对象的三大特性之一 多态

    多态: 子类重写父类方法 1)位置:子类和父类中有同名的方法 2)方法名相同,返回类型和修饰符相同,参数列表相同       方法体不同 多态的优势和应用场合 多态:同一个引用类型,使用不同的实例而执 ...

  2. 安装ubuntu gnome桌面

    注意: ubuntu 14.04.5默认的为unity桌面,有多点触发,没有自带Tweak Tool工具. 安装gnome桌面 sudo apt-get install ubuntu-gnome-de ...

  3. 读写锁 SRWLOCK

    读写锁在对资源进行保护的同时,还能区分想要读取资源值的线程(读取者线程)和想要更新资源的线程(写入者线程). 对于读取者线程,读写锁会允许他们并发的执行.当有写入者线程在占有资源时,读写锁会让其它写入 ...

  4. DevExpress v18.1新版亮点——DevExtreme篇(三)

    用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能 ...

  5. PM2报错‘Spawning PM2 daemon with pm2_home...’的解决方案

    问题 在某次因为SRE升级域名问题,导致了Node服务器代码死循环了,产生的504(Gateway timeout)错误. 登录到机器上看,正在用pm2查问题的原因中,突然发现错误从504变成的502 ...

  6. PCP项目立项

    1.需求分析 现如今已经进入互联网时代,无论是工作还好娱乐都已经离不开互联网,与此同时,网络相关的问题也时不时的侵扰着我们,这需要我们具有一定网络相关知识来解决相关问题,而这时,一款工作便利,免费的网 ...

  7. 去掉HTML标记 .

    ///   <summary>     ///   去除HTML标记     ///   </summary>     ///   <param   name=" ...

  8. Spring学习六(事物管理)

    参考链接 http://www.mamicode.com/info-detail-1248286.html http://www.cnblogs.com/wangdaqian/archive/2017 ...

  9. 校验总结:校验是否是中英文等等(1.正则校验 2.hibernate volidator)

    1.正则校验 import java.util.regex.Matcher;import java.util.regex.Pattern; public class Validation { //-- ...

  10. SQL注入之Sqli-labs系列第一关

    在开始接触渗透测试开始,最初玩的最多的就是Sql注入,注入神器阿D.明小子.穿山甲等一切工具风靡至今.当初都是以日站为乐趣,从安全法实施后在没有任何授权的情况下,要想练手只能本地环境进行练手,对于sq ...