我已经build立了巨大页面,但是我没有看到其中的任何一个保留。 我错过了一个步骤,或者由于某种原因,MySQL是无法利用Hugepages? 我还没有创build一个hugetlbfs挂载,虽然从我读的,MySQL不会以这种方式调用页面。 如果我错了,请让我知道,因为这将是一个微不足道的解决scheme。 几乎所有的MySQL表都使用InnoDB。
注意:我创build了一个hugetlbfs,没有按预期更改。 是否有可能重新启动将纠正这种情况? 我不想通过这个程序,因为这是高可用性,但是如果有必要的话可以这样做。
这是我认为相关的configuration。
/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
我真的很感激任何帮助,我完全没有想法。 如果我错过了更多相关的configuration或诊断,请发表评论,我会将其添加到问题中。
你可以编辑/etc/init.d/mysqld,在prog="MySQL"
下面添加以下内容,重新启动mysql,看看问题是否存在?
ulimit -l无限制
我怀疑你正在打下面的错误。
你能添加这条线吗?
ulimit -l unlimited
在/etc/init.d/mysqld中的“prog =”MySQL“'行之后启动脚本并重新启动服务。
这是CentOS 5中的一个bug,应该在Centos 6中修复。
请确认这是否适用于您。