Максимальное количество подключений mysql
Я установил максимальные соединения примерно в 2000 в файле my.cnf.
max_connections=2048
Я обновил до 5.5.20, и теперь я вижу следующую строку в журнале ошибок.
120201 19:40:24 [Warning] Changed limits: max_open_files: 1024 max_connections: 214 table_cache: 400
Почему mysql изменил значение максимальных соединений на 214?
# mysqladmin variables | grep max_connections
| max_connections | 214
Мягкие и жесткие открытые файлы, ограниченные ОС, составляют 1024
# ulimit -Sa | grep "open files"
open files (-n) 1024
# ulimit -Ha | grep "open files"
open files (-n) 1024
Число фактически используемых максимальных соединений:
# mysql -e"show status like '%used_connections%'"
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 95 |
+----------------------+-------+
3 ответа
Кажется, все в порядке. У вас не может быть max_connections больше, потому что вы open_files_limit слишком низки. Для каждого соединения MySQL открывает несколько файлов. Посмотрите здесь .
Таким образом, вам придется увеличить ограничение на открытые файлы в вашей ОС, а затем вы можете установить более высокое значение max_connections.
Это похоже на ту же проблему, на которую я ответил в stackoverflow здесь , хотя я использовал CentOS 7 & MySQL 5.6.26
Вам нужно ограничить количество открытых файлов как для пользователя mysql (в limits.conf), так и для службы mysql (в файле mysql.service)
добавьте эти две строки в /etc/security/limits.conf
mysql hard nofile 65535
mysql soft nofile 65535
добавьте эту строку в /usr/lib/systemd/system/mysqld.service (в разделе [service])
LimitNOFILE=65535
затем, наконец, перезагрузитесь и убедитесь, что эти сообщения об ошибках исчезли из вашего журнала ошибок mysql.
Это, похоже, некоторая ошибка в новом mysqld. У меня такая же проблема. Установка max_connections на 700 сработала, но если я установил ее на 900, она была сброшена до 214 во время запуска. Если бы это было целенаправленное изменение, то оно уменьшило бы его до 700 или что-то подобное, значение 214 не имеет смысла.
Во всяком случае, повышение предела дескриптора с помощью ulimit -n устраняет проблему.