在LINUX平台配置 MSYQL 支持大页内存
发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,操作系统:[root@oradb ~]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 6.4 (Santiago)数据
千家信息网最后更新 2024年10月18日在LINUX平台配置 MSYQL 支持大页内存操作系统:
[root@oradb ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.27 |
+-----------+
1 row in set (0.00 sec)
在这个测试中我们设置400MB的大页内存给 MYSQL使用
1. 关闭匿名大页内存
下面的命令输出为 [always] 表示开启匿名大页内存,需要关闭
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
在 /boot/grub/grub.conf 文件中添加 transparent_hugepage=never 禁止匿名大页内存
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=bfd79be7-6446-4864-bc1f-ad15d4b242ad rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never
initrd /initramfs-2.6.32-358.el6.x86_64.img
重启操作系统,然后检查是否禁止了匿名大页
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never] # 已经成功禁止匿名大页内存
[root@oradb ~]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB # AnonHugePages 为零,表示已经成功禁止了匿名大页内存
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB # 大页内存的页面大小是2MB
2. 在内核参数中配置400MB的大页内存
# vi /etc/sysctl.conf
# config hugepages
# vm.nr_hugepages = MYSQL需要使用的内存 / 大页的页面大小 = 400/2=200
vm.nr_hugepages=200
vm.hugetlb_shm_group=507 # 507是MYSQL所属组ID
[root@oradb ~]# sysctl -a |grep shmmax
kernel.shmmax = 68719476736
[root@oradb ~]# sysctl -a |grep shmall
kernel.shmall = 4294967296
操作系统默认已经设置 kernel.shmmax=64GB,kernel.shmall=4GB,已经超过我们
需要的内存量(400MB)所以不需要调整这两个参数。
3.重新加 LINUX 载内核参数
sysctl -p
4. 设置 MYSQL用户限制内存锁定400MB
vi /etc/security/limits.conf
mysql soft memlock 409600 #单位为KB,我们配置的是MYSQL用户限制内存锁定400MB
mysql hard memlock 409600
5. 配置MYSQL启用大页内存
[mysqld]
large-pages
6. 启动MYSQL
/app/oracle/oradata2/mysql-5.6.27/bin/mysqld_safe --defaults-file=/app/oracle/oradata2/mysql-5.6.27/my.cnf --user=mysql &
检查已经使用了大页内存
[root@oradb mysql-5.6.27]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 200
HugePages_Free: 197
HugePages_Rsvd: 67
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total为所分配的页面数目,和Hugepagesize相乘后得到所分配的内存大小。200*2/1024大约为200MB。
HugePages_Free为从来没有被使用过的Hugepages数目。即使 MYSQL INNDOB 缓冲池已经分配了这部分内存,但是如果没有实际写入,
那么看到的还是Free的。这是很容易误解的地方。
HugePages_Rsvd为已经被分配预留但是还没有使用的page数目。在 MYSQL 刚刚启动时,大部分内存应该都是Reserved并且Free的,随着
INNDOB 缓冲池的使用,Reserved和Free都会不断的降低。
HugePages_Free - HugePages_Rsvd 这部分是没有被使用到的内存,如果没有其他的 MYSQL实例,这部分内存也许永远都不会被使用到,也就是被浪费了。
在这个测试中没有使用的大页内存是 197-67=130*2=260MB。
[root@oradb ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.27 |
+-----------+
1 row in set (0.00 sec)
在这个测试中我们设置400MB的大页内存给 MYSQL使用
1. 关闭匿名大页内存
下面的命令输出为 [always] 表示开启匿名大页内存,需要关闭
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] never
在 /boot/grub/grub.conf 文件中添加 transparent_hugepage=never 禁止匿名大页内存
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux (2.6.32-358.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=bfd79be7-6446-4864-bc1f-ad15d4b242ad rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never
initrd /initramfs-2.6.32-358.el6.x86_64.img
重启操作系统,然后检查是否禁止了匿名大页
[root@oradb ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [never] # 已经成功禁止匿名大页内存
[root@oradb ~]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB # AnonHugePages 为零,表示已经成功禁止了匿名大页内存
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB # 大页内存的页面大小是2MB
2. 在内核参数中配置400MB的大页内存
# vi /etc/sysctl.conf
# config hugepages
# vm.nr_hugepages = MYSQL需要使用的内存 / 大页的页面大小 = 400/2=200
vm.nr_hugepages=200
vm.hugetlb_shm_group=507 # 507是MYSQL所属组ID
[root@oradb ~]# sysctl -a |grep shmmax
kernel.shmmax = 68719476736
[root@oradb ~]# sysctl -a |grep shmall
kernel.shmall = 4294967296
操作系统默认已经设置 kernel.shmmax=64GB,kernel.shmall=4GB,已经超过我们
需要的内存量(400MB)所以不需要调整这两个参数。
3.重新加 LINUX 载内核参数
sysctl -p
4. 设置 MYSQL用户限制内存锁定400MB
vi /etc/security/limits.conf
mysql soft memlock 409600 #单位为KB,我们配置的是MYSQL用户限制内存锁定400MB
mysql hard memlock 409600
5. 配置MYSQL启用大页内存
[mysqld]
large-pages
6. 启动MYSQL
/app/oracle/oradata2/mysql-5.6.27/bin/mysqld_safe --defaults-file=/app/oracle/oradata2/mysql-5.6.27/my.cnf --user=mysql &
检查已经使用了大页内存
[root@oradb mysql-5.6.27]# cat /proc/meminfo | grep -i huge
AnonHugePages: 0 kB
HugePages_Total: 200
HugePages_Free: 197
HugePages_Rsvd: 67
HugePages_Surp: 0
Hugepagesize: 2048 kB
HugePages_Total为所分配的页面数目,和Hugepagesize相乘后得到所分配的内存大小。200*2/1024大约为200MB。
HugePages_Free为从来没有被使用过的Hugepages数目。即使 MYSQL INNDOB 缓冲池已经分配了这部分内存,但是如果没有实际写入,
那么看到的还是Free的。这是很容易误解的地方。
HugePages_Rsvd为已经被分配预留但是还没有使用的page数目。在 MYSQL 刚刚启动时,大部分内存应该都是Reserved并且Free的,随着
INNDOB 缓冲池的使用,Reserved和Free都会不断的降低。
HugePages_Free - HugePages_Rsvd 这部分是没有被使用到的内存,如果没有其他的 MYSQL实例,这部分内存也许永远都不会被使用到,也就是被浪费了。
在这个测试中没有使用的大页内存是 197-67=130*2=260MB。
内存
分配
配置
操作系统
参数
大小
数目
系统
页面
成功
内核
用户
检查
测试
缓冲
限制
不断
两个
也就是
单位
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
servlet删除数据库
wamp网站服务器组件
服务器维护统治
网络安全的不可否认性是指什么
poe 台服数据库
网络安全隐患排查工作通知
采访马化腾腾讯数据库在哪
工业软件开发技术需要学什么
正式服魔兽人口数据库
东莞卫星软件开发商家
软件开发管理相关软件
软件开发需遵循的基本原则
人民银行网络安全周致辞
网络安全逻辑顺序
高青染色软件开发公司
药物数据库使用方法
网络安全期末重点
南京邮电大学数据库的情况
如何用电脑玩手游我的世界服务器
软件开发费英文
网络技术服务营业执照
无线网络技术教程电子书资源
中概互联网和恒生科技
法律服务网络技术研究院
软件开发相关基金
小程序查询数据库显多行
什么箱子里有服务器
流媒体转发服务器
软件开发六个人的话如何分配
什么数据库有real类型