У меня проблема с mysql 5.5, работающим в Ubuntu 12.04 с параметром open-files-limit.
Недавно я заметил некоторые проблемы из-за ограничения 1024, и на самом деле ограничение основной системы было установлено на 1024, поэтому я изменил /etc/security/limits.conf следующим образом:
* soft nofile 32000
* hard nofile 32000
root soft nofile 32000
root hard nofile 32000
После этого я проверяю значение ulimit для root и даже для пользователя mysql, оба вернули новое значение: 32000, поэтому я предполагаю, что изменение уже было сделано.
Я также изменил значение в файле my.cnf, установив open-files-limit равным 24000, например:
open-files-limit = 24000
Теперь наступает странная часть: когда я перезапускаю службу mysql и проверяю переменную open_files_limit, она возвращает, что она все еще установлена на 1024, поэтому у меня те же проблемы, что и раньше (очевидно), я пытался использовать open-files-limit вместо этого open_files_limit в файле конфигурации my.cnf, результат тот же, НО если я переопределю команду службы для запуска службы и запуска только с использованием mysqld (без дополнительных параметров), служба запускается, и когда я проверяю параметр, он возвращает 32000 ... Я не знаю, откуда оно берет это значение, поскольку оно не установлено в my.cnf и не передается через командную строку, по крайней мере, не для меня.
Есть идеи о том, почему не работает изменение и как решить его обычным способом (запуск через службу ...)?
Я наконец нашел проблему, похоже, что выскочка не использует параметры, определенные в /etc/security/limits.conf, поэтому, когда я запускаю mysql через служебную команду (и, следовательно, под выскочкой), он отменяет эти определенные ограничения и использует по умолчанию 1024.
Решение состоит в том, чтобы изменить файл mysql.conf, который определяет службу выскочки, он находится в /etc/init/mysql.conf, и добавить следующие строки перед блоком предварительного запуска:
# NB: Upstart scripts do not respect
# /etc/security/limits.conf, so the open-file limits
# settings need to be applied here.
limit nofile 32000 32000
limit nproc 32000 32000
Первое значение определяет мягкое ограничение, другое - жесткое. После добавления этих строк служба работает должным образом, применяя значения, определенные в файле my.conf.
Это ограничение должно применяться для каждой службы-выскочки, которая определена в / etc / init, поэтому, если у какой-либо службы есть такая же проблема с ограничением количества открытых файлов, это решение также должно работать.