在LINUX平台配置 MSYQL 支持大页内存
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,操作系统:[root@oradb ~]# cat /etc/redhat-releaseRed Hat Enterprise Linux Server release 6.4 (Santiago)数据
千家信息网最后更新 2025年02月04日在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安全错误
数据库的锁怎样保障安全
韩国云服务器免费
聚力汇通网络技术有限公司
班级网络安全主题班会设计
普陀区银联数据库价格查询
嘉定区口碑好的软件开发哪家好
苹果平板服务器是在中国吗
国产服务器 知乎
现在做网络安全怎么样
乌鲁木齐市软件开发价格
怎样看数据库中的数据
亿图软件开发绘图工具
triz数据库百度
网络安全个人防护回报
网络安全怎么接单
云服务器推广站点源码
北京华夏联合网络技术有限公司
外置打印机服务器
东软集团面试软件开发问题
1分钟保存数据到数据库
智能化浪潮服务器厂家直供
软件工程数据库设计人力资源管理
金蝶服务器要求
南京电话软件开发产品介绍
qqwry数据库
南通服务器机柜定做报价
软件开发 周期模型
C 编程实现数据读入数据库
杭州运营网络技术哪家便宜
数据库安全责任意识
印度网络技术工程师