MUMA架构
在单实例的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到磁盘上,引发性能问题。
 
非MUMA架构
在MUMA架构下,虽然访问其他节点内存的性能低于访问本地节点内存,但并不是导致性能问题的主要原因,为解决系统存在空闲内存而部分NUMA发生SWAP操作的问题,可以有以下两种解决方式:
1. 在Linux Kernel启动参数中加上numa=off(这样也会影响到其他进程使用NUMA);
2. 在mysqld_safe脚本中加上“numactl –interleave all”来启动mysqld。
 
修改后MySQL内存分配如:
 
 
参数--interleave=nodes用于设定内存的交织分配模式,即系统在为多个节点分配内存空间时,将以轮询分发的方式分配给多个节点,如果当前众多的交织分配内存节点中的目标节点无法正确地分配内存空间的话,内存空间将会由其他节点来分配
 
查看和配置NUMA
## 查看CPU和NUMA信息
numactl --hardware

输出结果示例:

numactl --hardware
available: nodes (-)
node cpus:
node size: MB
node free: MB
node cpus:
node size: MB
node free: MB
node distances:
node
:
:

上面是2个NUMA节点的服务器,配置64G内存,每个节点分配32G内存,节点0的可用内存高于节点1的可用内存

 

 

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

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

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

  2. MySQL Server类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  3. MySQL Server类型之MySQL客户端工具的下载、安装和使用(博主推荐)

    本博文的主要内容有 .MySQL Server 5.5系列的下载 .MySQL Server 5.5系列的安装 .MySQL Server 5.5系列的使用 .MySQL Server 5.5系列的卸 ...

  4. MySQL初体验--安装MySQL

    操作系统版本:redhat 6.7 64位 [root@mysql ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server releas ...

  5. mysql交互协议解析——mysql包基础数据、mysql包基本格式

    mysql交互协议是开发mysql周边组件常用的协议,如JDBC,libmysql等等. 在此我们要认识到mysql交互协议其实是半双工的交互协议,至于为什么,这里就先挖个小坑,以后再填. 在探讨my ...

  6. [MySQL Reference Manual] 24 MySQL sys框架

    24 MySQL sys框架 24 MySQL sys框架 24.1 sys框架的前提条件 24.2 使用sys框架 24.3 sys框架进度报告 24.4 sys框架的对象 24.4.1所有sys下 ...

  7. MySQL命令大全:MySQL常用命令手册、MySQL命令行大全、查询工具

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  8. Mac OS 下 mysql 找不到 mysql.sock 的问题

    mysql.sock 无法找到一般存在两种问题,一是mysql服务未启动,mysql.sock没有生成,二是mysql.sock的指向位置出错,在指向位置加个mysql.sock的软链接就可以解决. ...

  9. mysql命令行以及mysql workbence查询结果中文乱码的解决方法

    最近正在学习mysql,安装环境是windows server 2003 32位操作系统+mysql 5.1.47同时也安装了mysql命令行以及mysql workbench这里是test数据库cr ...

  10. [MySQL] SqlServer 迁移到 MySQL 方法介绍

    一.原则: 只迁移表结构和数据,存储过程.函数.触发器尽量自己改写,并充分测试. 迁移前,先设置好数据库的一些参数,比如默认存储引擎,默认编码等,方便后续导入. 二.方法: 1.使用MySQL Wor ...

随机推荐

  1. [SCOI2003]字符串折叠

    一道蛮好玩的区间DP...其实只要做好check...然后统计答案就好了...QAQ... 呆码: #include<iostream> #include<cstdio> #i ...

  2. shell练习题5

    需求如下: 用shell实现,把一个文件文档中只有一个数字的行给打印出来.(以/password文件为例,自行修改) 参考解答如下 方法1 #!/bin/bash file_name=passwd n ...

  3. Problem A: 重载字符的加减法

    Description 定义一个字符类Character,只有一个char类型的数据成员. 重载它的+.-.<<和>>运算符,其中+.-的第二个操作数是int类型的整数n.“+ ...

  4. nginx 多域名指向多个根目录配置,设置自定义请求头 proxy_set_header,ssl 证书安装配置

    1.nginx.conf 配置文件引入子配置文件 include vhost-server/*.conf;  关键在 server_name  不同域名执行不同的根 user root; #user ...

  5. 更强大的python正则表达式模块 -- regex

    python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...

  6. 安装oracle11g client 【INS-30131】执行安装程序验证所需的初始设置失败的解决方法

    今天在服务器(操作系统windows server 2008R2)上安装Oracle11g 客户端,弹出“执行安装程序验证所需的初始设置失败”,如上图.网上找了一些方法,简单整理如下,仅供参考. 问题 ...

  7. python爬虫套件在mac上的安装-bs的安装

    1,首先安装pip gem install pip 这种方式会报错: ERROR:  While executing gem ... (Gem::FilePermissionError) You do ...

  8. json模块

    dic = {"name":"boke","age":"18"} #字典 data = json.dumps(dic) ...

  9. Windows驱动——读书笔记《Windows驱动开发技术详解》

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  10. Zedboard搭建Linux嵌入式环境

    ZYNQ是ARM硬核和PL软核的结合体,Xillybus官方为他开发了驱动套件Xillinux,赶快将开发板投入使用吧! 本随笔参考了众多博主和官方教程:(基本上就是把官方教程翻译了一遍,呵呵:)) ...