Назад | Перейти на главную страницу

Огромные страницы, не используемые 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

Я был бы очень признателен за любую помощь, у меня совершенно нет идей. Если я пропустил еще какие-то актуальные конфиги или диагностику, прокомментируйте, и я добавлю это к вопросу.

Вы можете добавить эту строку

ulimit -l unlimited 

после строки 'prog = "MySQL"' в /etc/init.d/mysqld сценарий запуска и перезапуска службы.

Это ошибка в CentOS 5, и ее следует исправить в Centos 6.

Пожалуйста, подтвердите, работает ли это для вас.

Можете ли вы отредактировать /etc/init.d/mysqld, добавить следующее под prog="MySQL" перезапустите mysql и посмотрите, сохраняется ли проблема?

ulimit -l без ограничений

Я подозреваю, что вы столкнулись со следующей ошибкой.

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