MySQL 5.0、CentOS 5 未使用大页面

MySQL 5.0、CentOS 5 未使用大页面

我已经设置了 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

非常感谢您的帮助,我完全没有主意了。如果我错过了更多相关配置或诊断,请发表评论,我会将其添加到问题中。

答案1

您可以编辑 /etc/init.d/mysqld,在prog="MySQL"重新启动 mysql 下添加以下内容,看看问题是否仍然存在?

ulimit -l unlimited

我怀疑你遇到了以下错误。

https://bugzilla.redhat.com/show_bug.cgi?id=565534

答案2

你能添加这一行吗

ulimit -l unlimited 

在 /etc/init.d/mysqld 启动脚本中的行 'prog="MySQL"' 之后,重新启动服务。

这是 CentOS 5 中的一个错误,应该在 Centos 6 中修复。

请确认这是否适合您。

相关内容