MySQL автоматическая настройка максимальных значений соединений

11

Я установил максимальное количество подключений около 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     |
+----------------------+-------+
shantanuo
источник
1
Попробуйте установить открытые файлы ulimit выше, например, 4096.ulimit -n 4096
Изменилось ли поведение? У меня была версия 5.0.77, и я не заметил этой проблемы. Только при обновлении до 5.5.20 меняются значения!
Shantanuo
1
Просто собираюсь спросить очевидное. Вы подтвердили, что обновление не изменило ваш my.cnf? Кроме того, какая ОС? Было ли это установлено менеджером пакетов, например yum? Если да, то какой пакет?
Дерек Дауни

Ответы:

6

Мне кажется, все в порядке. Вы не можете иметь max_connections больше этого значения, потому что у вас open_files_limit слишком низкое. Для каждого соединения MySQL открывает несколько файлов. Посмотрите здесь .

Таким образом, вам придется увеличить лимит открытых файлов в вашей ОС, а затем вы можете установить более высокое значение max_connections.

Александар Вучетич
источник
5

Похоже, это та же проблема, на которую я ответил здесь в stackoverflow , хотя я использовал CentOS 7 и MySQL 5.6.26

Вам необходимо увеличить лимит открытых файлов как для пользователя mysql (в limit.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.

МНБ
источник
Другое решение: dba.stackexchange.com/questions/32987/...
Nav
@Nav - Да, вы не можете использовать максимальное количество настроенных соединений, если ваша ОС не позволяет mysqld использовать соответствующее количество файловых дескрипторов
MNB
Кроме того, в Ubuntu 15.04+ требуется другой подход: stackoverflow.com/questions/23977095/…
Nav
0

Кажется, это какая-то ошибка в новом mysqld. У меня такая же проблема. Установка max_connections на 700 работала, но если я установил его на 900, он был сброшен на 214 во время запуска. Если бы это было целенаправленное изменение, то оно снизило бы его до 700 или чего-то подобного, значение 214 не имеет смысла.
В любом случае, увеличение лимита дескриптора с помощью ulimit -n решает проблему.

Барт К
источник