我已经设置了 Hugepages,但我没有看到它们中的任何一个被保留。我是否错过了一个步骤,或者由于某些特殊原因,MySQL 是否无法使用 Hugepages?我没有创建大量的 hugetlbfs,尽管根据我的阅读,MySQL 不会以这种方式调用页面。如果我错了,请告诉我,因为那将是一个微不足道的解决方案。几乎我所有的 MySQL 表都使用 InnoDB。
注意:我创建了一个 hugetlbfs,没有像预期的那样改变。重新启动是否有可能纠正这种情况?我不想完成该过程,因为这是高可用性,但如果有必要,我会这样做。
这是我认为相关的配置。
/etc/sysctl.conf
...
## Huge Pages
vm.nr_hugepages = 4096
vm.hugetlb_shm_group = 27
## SHM
kernel.shmmax = 34359738368
kernel.shmall = 8589934592
...
/etc/security/limits.conf
...
mysql soft nofile 12888
mysql hard nofile 51552
@mysql soft memlock unlimited
@mysql hard memlock unlimited
/etc/my.cnf
[mysqld]
large-pages
...
grep Huge /proc/meminfo
HugePages_Total: 4096
HugePages_Free: 4096
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
id mysql
uid=27(mysql) gid=27(mysql) groups=27(mysql) context=root:system_r:unconfined_t:SystemLow-SystemHigh
tail -6 /var/log/mysqld.log
InnoDB: HugeTLB: Warning: Failed to allocate 1342193664 bytes. errno 12
InnoDB HugeTLB: Warning: Using conventional memory pool
120808 15:49:25 InnoDB: Started; log sequence number 0 1729804158
120808 15:49:25 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.0.95' socket: '/var/lib/mysql/mysql.sock' port: 3306 Source distribution
我真的很感激任何帮助,我完全没有想法。如果我错过了更多相关的配置或诊断,请发表评论,我会将其添加到问题中。
你能加这一行吗
在 /etc/init.d/mysqld 中的 'prog="MySQL"' 行之后启动脚本并重新启动服务。
这是 CentOS 5 的错误,应该在 Centos 6 中修复。
请确认这是否适合您。
您可以编辑/etc/init.d/mysqld,在restart mysql 下添加以下内容
prog="MySQL"
,看看问题是否仍然存在?我怀疑你遇到了以下错误。
https://bugzilla.redhat.com/show_bug.cgi?id=565534