Я создал 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
Я был бы очень признателен за любую помощь, у меня совершенно нет идей. Если я пропустил еще какие-то актуальные конфиги или диагностику, прокомментируйте, и я добавлю это к вопросу.
Вы можете добавить эту строку
ulimit -l unlimited
после строки 'prog = "MySQL"' в /etc/init.d/mysqld сценарий запуска и перезапуска службы.
Это ошибка в CentOS 5, и ее следует исправить в Centos 6.
Пожалуйста, подтвердите, работает ли это для вас.
Можете ли вы отредактировать /etc/init.d/mysqld, добавить следующее под prog="MySQL"
перезапустите mysql и посмотрите, сохраняется ли проблема?
ulimit -l без ограничений
Я подозреваю, что вы столкнулись со следующей ошибкой.