mysql автоматичне налаштування максимальних значень з'єднань


11

У моєму файлі my.cnf я встановив максимум підключень приблизно до 2000.

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     |
+----------------------+-------+

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.



@Nav - Так, ви не можете використовувати максимальну кількість налаштованих підключень, якщо ваша ОС не дозволяє використовувати mysqld відповідну кількість ручок файлів
MNB

Крім того , Ubuntu 15.04+ потрібен інший підхід: stackoverflow.com/questions/23977095 / ...
Nav

0

Схоже, це помилка в новому mysqld. У мене була така ж проблема. Встановлення max_connections на 700 працювало, але якщо я встановив його на 900, він був скинутий на 214 під час запуску. Якби це була цілеспрямована зміна, то вона знизила б її до 700 або щось подібне, значення 214 не має сенсу.
У будь-якому випадку, збільшення межі дескриптора ulimit -n виправляє проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.