mysql启用hugepage

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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。
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
存储 Oracle 关系型数据库
postgresql数据库|wal日志的开启以及如何管理
postgresql数据库|wal日志的开启以及如何管理
2176 0
网络数据包收发流程(三):e1000网卡和DMA
一、硬件布局每个网卡(MAC)都有自己的专用DMA Engine,如上图的 TSEC 和 e1000 网卡intel82546。上图中的红色线就是以太网数据流,DMA与DDR打交道需要其他模块的协助,如TSEC,PCI controller以太网数据在 TSECDDR  PCI_Co...
5918 1
|
5月前
|
存储 缓存 固态存储
SSD固态硬盘使用指南:提升速度与延长寿命的技巧
固态硬盘(SSD)以其高速读写和流畅体验受到用户青睐,但合理使用与维护才能充分发挥其性能并延长寿命。本文详解SSD工作原理、优化技巧及注意事项:开启TRIM功能、避免碎片整理、保持闲置空间、管理虚拟内存、关闭不必要服务、启用AHCI模式等。同时建议减少频繁写入、定期检测健康状态、更新固件,并通过数据备份和散热管理进一步延长SSD寿命。掌握这些方法,让SSD始终高效稳定运行。
SSD固态硬盘使用指南:提升速度与延长寿命的技巧
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
1417 5
|
存储 SQL Docker
ClickHouse入门指南:快速搭建与使用
【10月更文挑战第26天】在大数据时代,如何高效地处理海量数据成为了许多企业和开发者的关注点。ClickHouse 是一个开源的列式数据库管理系统(Column-Oriented DBMS),以其出色的查询性能和高并发能力,在数据分析领域迅速崛起。本文将从一个初学者的角度出发,详细介绍如何快速上手 ClickHouse,涵盖从环境搭建到基础操作的全过程。
1567 3
|
Dubbo IDE 应用服务中间件
精通 Python aiohttp:逐步教程
aiohttp 就是 Python 中一款优秀的异步 Web 框架,它能够帮助我们构建高效的异步 Web 应用和异步 HTTP 客户端。在本文中,我们将深入探讨 aiohttp 是什么以及如何使用它,通过简单易懂的案例带领你理解异步编程,以及如何处理异步请求和异步 HTTP 客户端。
|
存储 SQL 缓存
一文带你了解MySQL之Adaptive Hash Index
在InnoDB体系架构图的内存结构中,还有一块区域名为:Adaptive Hash Index,翻译成中文:自适应哈希索引,缩写:AHI,它是一个纯内存结构,我们今天就来了解它。
2706 0
|
SQL 关系型数据库 MySQL
如何解决mysql警告:“ InnoDB:page_cleaner:1000毫秒的预期循环用了XXX毫秒设置可能不是最佳的”?
如何解决mysql警告:“ InnoDB:page_cleaner:1000毫秒的预期循环用了XXX毫秒设置可能不是最佳的”?
3483 0
|
监控 数据可视化 Java
如何在Java中优化垃圾回收(GC)性能
如何在Java中优化垃圾回收(GC)性能
|
NoSQL Redis 数据库
通过migrate命令实现两个redis实例之间的数据迁移
通过migrate命令实现两个redis实例之间的数据迁移