mysql启用hugepage

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: hugepage,大页存储,mysql

1 hugepage在linux 2.6以后的内核才支持,mysql中只有innodb引擎才支持,hugepage作用:

  • 1.减少内存置换
  • 2.减少TLB miss次数
  • 3.减少swap

**启用了hugepage以后,top查看内存被占用很多,但是找不到具体的进程,其实就是hugepage占用了,使用Hugepage内存是共享内存,它会一直pin在内存中的,不会被交换出去,也就是说使用hurgepage的内存不能被其他的进程使用,所以,一定要合理设置这个值,避免造成浪费。对于只使用Oracle的服务器来说,把Hugepage_pool设置成SGA大小即可。

2 配置:

[root@chwb13 mysql]# cat /proc/meminfo  |grep -i huge
AnonHugePages:    440320 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

在/etc/security/limits.conf定义mysql用户的memlock的数量
mysql soft memlock unlimited
mysql hard memlock unlimited

3.查看mysql用户的组信息

id mysqluid=502(mysql) gid=501(dba) groups=501(dba)

4.配置/etc/sysctl.conf使用大页内存的用户组

vm.hugetlb_shm_group=501
vm.nr_hugepages=10000                //定义hugepage的数量,innodb_buffer_pool_size+innodb_additional_mem_size一定要小于nr_hugepages*Hugepagesize(2MB),这个值也一定要比总内存小

修改my.cnf配置文件支持hugepage:
large_pages=1
重启mysql后查看:
mysql> show global variables like '%large_page%';

5 验证hugepage是否生效:

[root@localhost ~]# cat /proc/meminfo | grep Huge
HugePages_Total:  1000
HugePages_Free:    971
HugePages_Rsvd:    746
Hugepagesize:     2048 kB

HugePages_Free小于HugePages_Total,一切正常

报错:启动mysql。
在启动mysql的时候,最容易报的错误是:

InnoDB: HugeTLB: Warning: Failed to allocate 138412032 bytes. errno 12
InnoDB HugeTLB: Warning: Using conventional memory pool


这是由于上面配置的两点所致。
1)nr_hugepages 的值*2M应大于(innodb_buffer_pool_size+innodb_additional_mem_pool_size)因为以上谈到 innodb可以使用large pages来分配buffer pool跟additional memory pool.
2)memlock 的设置,在启动mysql时,一定要先查看用ulimit -a 来查看max locked memory 设置是否合理,可以尝试用以上两种方法来设置该值。还有一点,/etc/security/limits.conf配置文件的修改,可能无法通过ssh来 查看,故也不能用ssh来启动mysql。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
【Mysql】MYSQL参数max_allowed_packet 介绍
【Mysql】MYSQL参数max_allowed_packet 介绍
72 0
|
12月前
|
关系型数据库 MySQL 数据库
mysql下的max_allowed_packet参数设置
mysql下的max_allowed_packet参数设置
824 0
|
9月前
|
SQL 缓存 Oracle
Linux中的HugePage对数据库服务来说为什么如此重要:以PG为例
Linux中的HugePage对数据库服务来说为什么如此重要:以PG为例
120 3
|
10月前
|
SQL 关系型数据库 MySQL
MySQL 中启用大页(Huge Pages)提高性能
在 MySQL 中启用大页(Huge Pages)可以提高性能,还可以减少内存的使用。大页能够减少操作系统的页表,由此可减轻 CPU 负担和内存空间,从而减少了内存管理开销。下面是在 Linux 系统中启用 MySQL 大页的步骤: 1. 配置 Linux 系统大页:在物理或虚拟机上启用大页,请使用以下命令后设置了足够的大页: ```shell echo 2048 > /proc/sys/vm/nr_hugepages ``` 此处示例启用了 2048 个大页。请注意,此操作需要 root 用户权限。 2. 通过运行下列命令可检查您的系统是否已经启用了大页: ```shell gre
564 0
|
安全 关系型数据库 MySQL
|
存储 关系型数据库 PostgreSQL
PostgreSQL中的full_page_writes的理解
1. full_page_writes的作用 PostgreSQL中的full_page_writes参数用来防止部分页面写入导致崩溃后无法恢复的问题。手册中的相关描述如下: http://postgres.cn/docs/9.3/runtime-config-wal.html#GUC-FULL-PAGE-WRITES full_page_writes (boolean)  打开这个选项的时候,PostgreSQL服务器在检查点之后对页面的第一次写入时将整个页面写到 WAL 里面。
1610 0