gpt4 book ai didi

mysql - 巨页无法与 mariadb 一起使用

转载 作者:行者123 更新时间:2023-11-29 22:38:41 27 4
gpt4 key购买 nike

我们尝试为与 galera 集群一起运行的 mariabdb 设置大页面。我们已经分配了足够高的大页来容纳 innodb 缓冲区。

服务器.conf

[mysqld]
large-pages
innodb_buffer_pool_size =4G

/etc/sysctl.conf

# hugepages information
vm.nr_hugepages = 3072

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

/etc/security/limits.conf

@mysql      soft    memlock     unlimited
@mysql hard memlock unlimited

免费-m

             total       used       free     shared    buffers     cached
Mem: 11908 11635 272 0 68 5502
-/+ buffers/cache: 6064 5843
Swap: 2559 0 2559

mysqld.log 中的错误

150403  4:46:12 [Note] InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
InnoDB: HugeTLB: Warning: Failed to allocate 687865856 bytes. errno 1
InnoDB HugeTLB: Warning: Using conventional memory pool
150403 4:46:13 [Note] InnoDB: Completed initialization of buffer pool

cat/proc/meminfo |grep -i 巨大

AnonHugePages:         0 kB
HugePages_Total: 3072
HugePages_Free: 3072
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

最佳答案

我发现您的配置中缺少一个步骤:您需要设置可以访问 HugeTLB 内存的(mysql 的)组号。

检查当前分配的值:

$ sysctl vm.hugetlb_shm_group

这可能只会返回 0,即“root”组。您应该创建一个hugetlb 组并将mysql 添加到该组,或者使用mysql 所属的组之一。无论哪个组,使用其 GID(分别使用 grep '^hugetlb:'/etc/group | cut -d: -f3id -g mysql)并执行:

# sysctl -w vm.hugetlb_shm_group=<gid>

(替换为您所在组的 GID)

测试它是否有效,它确实将以下行添加到/etc/sysctl.conf (或/etc/sysctl.d/下的新文件中):

vm.hugetlb_shm_group = <gid>

关于mysql - 巨页无法与 mariadb 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29457769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com