Ubuntu: 12.04 LTS (Linux mysql02 3.2.0-40-generic # 64-Ubuntu SMP Пн 25 марта 21:22:10 UTC 2013 x86_64 x86_64 x86_64 GNU / Linux)
MySQL: дистрибутив Ubuntu 5.5.31
Apparmor: УДАЛЕНО !
Сервер работает отлично уже более года. Тогда в этот понедельник MySQL начал выходить из строя. Обновление вызвало проблему, и мы не можем понять, что это такое. Мы даже пытались откатиться до MySQL 5.5.30, но безуспешно. Мы вернулись в 5.5.31.
Записи журнала ошибок MySQL:
130430 7:55:46 [ERROR] Error in accept: Too many open files
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fclvod.frm' (errno: 24)
130430 7:55:46 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/fcnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcont.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffcontv.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/ffnote.frm' (errno: 24)
130430 7:55:47 [ERROR] /usr/sbin/mysqld: Can't open file: './eci_elite_test/frcfcl.frm' (errno: 24)
Похоже, мы столкнулись с проблемой ulimit. Мы полностью удалили APPARMOR. Мы увеличили /etc/security/limits.conf и все еще не повезло:
# Out of desperation....
* soft nofile 49152
* hard nofile 65536
# No effect!?!!?
#mysql soft nofile 49152
#mysql hard nofile 65536
И чтобы показать пределы. Работает.
root@mysql02:/etc/security# ulimit -Sa | grep "open files"
open files (-n) 49152
root@mysql02:/etc/security# ulimit -Ha | grep "open files"
open files (-n) 65536
И вот важные записи в my.cnf
[mysqld_safe]
open_files_limit = 16384
[mysqld]
open_files_limit = 16384
Тем не мение:
root@mysql02:/etc/mysql# mysqladmin -u root -pThePassword variables| grep open_files_limit
open_files_limit | 1024
Мы в полном недоумении. Будем очень благодарны любой помощи.
Ответы:
ОС: Ubuntu (Debian) развертывания
MySQL Server Option: ограничение открытых файлов
Похоже, что выскочка Debian не использует параметры, определенные в /etc/security/limits.conf , поэтому, когда вы запускаете mysql через команду service (и так, под upstart), он переопределяет эти определенные ограничения и использует значение по умолчанию 1024 ,
Решение состоит в том, чтобы изменить mysql.conf файл , который определяет службу выскочки, он расположен в /etc/init/mysql.conf и добавьте следующие строки перед в предпусковом блоке:
Ссылки:
источник
Была такая же проблема на Ubuntu 15.10.
https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758 - принес решение:
(в моем случае) если нет, создайте /lib/systemd/system/mysql.service и скопируйте содержимое в этот файл https://bugs.launchpad.net/ubuntu/+source/mysql-5.6/+bug/1434758/ comments / 11 и добавить две строки где-нибудь в файле
если один или оба файла существуют, проверьте, включены ли эти две строки:
systemctl daemon-reload
... и все должно быть хорошо.
источник
Поскольку ни один из вышеперечисленных вопросов не помог мне (только приводил к тому, что системе не хватало памяти), вот решение, которое я нашел:
В
/etc/mysql/my.conf
MySQL необходимо увеличить внутренний open_files_limit. Поэтому временно добавьте это в конфигурацию и перезапустите MySQL.sudo /etc/init.d/mysql restart
После запуска операции, которая выдает ошибку « слишком много открытых файлов» , вы можете изменить свою конфигурацию на исходную и снова перезапустить MySQL.
источник
Спасибо за обходной путь. Но для меня проблема была омрачена двумя другими фактами.
После исправления проблемы InnoDB, он все еще плевался
Мне пришлось запустить mysqld в корневой консоли и вручную перезапустить
Затем сервер начал показывать базы данных, но не смог получить доступ к некоторым таблицам. Ваш обходной путь с увеличенными лимитами устранил остальные проблемы, спасибо!
источник