Когда я устанавливаю open_files_limit = 16k в обоих: /etc/security/limits.conf и /etc/mysql/my.cnf
ulimit -n
16344
но в mysql:
show variables like 'open_files_limit';
open_files_limit: 4096
Итак, как mysql вычисляет open_files_limit. Есть ли еще что-нибудь, что я должен искать?
Вариант 1. Вы можете попробовать запустить lsof
на pid MySQL, подключенном к wc -l
.
Вариант 2: ll /proc/<mysql-pid>/fs/
Это даст вам список открытых файлов (включая сокеты и т. Д .; в Unix / Linux все является файлом).
Лимит открытых файлов можно проверить на mysql-client
с помощью show global varaibles like '%files%'
а потом set global variable open_files_limit=<some-larger-number>
Будьте осторожны, так как номер из ulimit -n
- это сумма оболочки для всех процессов, и не стоит ставить ее слишком высоко.
Если вы видите, что это число медленно увеличивается, вы, вероятно, захотите проверить свой код: есть висячие ссылки.
Вы указали это как open_files_limit
или open-files-limit
в my.cnf? В файле конфигурации это должно быть open-files-limit
.
проверьте ограничения для пользователя mysql:
limits -e -U mysql
ulimit -a
- показать ограничения для вашего пользователя
Если ограничения верны && вы используете Percona MYSQL, тогда необходимо активировать ограничения в стартовом скрипте.
Например, в FreeBSD: /usr/local/etc/rc.d/mysql-server
найти строку: ${mysql_limits="NO"}
и заменить NO
-> YES
PS. 2Янне Пиккарайнен в моем конфиге my.cnf: open_files_limit = 8192