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. SecureCRT通过SSH2协议远程登录Ubuntu 18.04的过程总结

    reference: https://blog.csdn.net/ghostar03/article/details/47441715 https://blog.csdn.net/u011186256 ...

  2. Excel--------实用功能(数据对比)

    --excel数据在sql中查询展示出来 SELECT * FROM (SELECT '101001' as code ,'上海宝山站' as name union allSELECT '102083 ...

  3. GUI开发:实时显示摄像头图像

    import tkinter as tk from PIL import Image, ImageTk import cv2 import numpy as np import time g_exit ...

  4. ajax 提交form格式 和 json格式

    json 格式 内容在body中 ajax设置   Content-Type: application/json 浏览器查看为 Request Payload The Request Payload ...

  5. 责任链模式(Chain of Responsibility)

    定义:为一个请求定义含有链状关系的接受对象,基于请求的类型,松耦合发送者和接受者之间的关系. 实现方式: 首先定义一个抽象类,包括一个公共抽象行为和决定子类链状关系的属性,然后创建一系列对象继承这个抽 ...

  6. bll

    string str = ConfigurationManager.AppSettings["DBName"].ToString(); public Studal ss() { A ...

  7. spring cloud 的安全连接

    Spring Cloud可以增加HTTP Basic认证来增加服务连接的安全性. 1.pom.xml加入security启动器 <dependency> <!-- Spring Cl ...

  8. shell脚本判断安装包位置及类型

    Log() { LogFile=/tmp/``.log LogDate=$(date +"%F %T") echo -e "\n\n||| ${LogDate} ||| ...

  9. 数据库between and

    在此记录一下,between相当于大于等于,and相当于小于,举个例子:select * from A where modefytime between '31-3月 -16' and '1-4月 - ...

  10. 基于Openstack环境下开启SRIOV

    主题思想: 先在系统层面修改配置文件,再去openstack里面修改配置文件 compute node系统层面: 先确认下是否含有ixgbe moudle lsmod |grep ixgbe 修改/e ...