Вступ до помилки MySQL: Забагато підключень
Коли у вас є веб-застосунок (сайт, блог, форум тощо), який користується високим попитом, тобто його відвідує велика кількість користувачів, це призводить до збільшення споживання ресурсів сервера. Якщо цей веб-застосунок використовує базу даних MySQL, а запитів дуже багато ( через погане програмування веб-сайту або велику кількість користувачів ), MySQL може відображати таку помилку:
mysqli_connect(): (HY000/1040): Too many connections
Що означає помилка MySQL: Забагато підключень?
Це означає, що до MySQL надходить занадто багато запитів, більше, ніж він може прийняти, більше, ніж може поставити в чергу або чекати.
Як це вирішити?
Просто, ми повинні збільшити максимальний ліміт запитів (з'єднань), які підтримує MySQL.
Я дам вам два варіанти вирішення цієї проблеми:
1. Редагуємо файл /etc/mysql/my.cfg:
nano /etc/mysql/my.cfg
У ньому ми помістимо наступне, де написано [mysql]:
max_connections = 500 max_user_connections = 500
Це збільшить максимальну кількість з'єднань зі 100 (що є типовим) до 500.
Ми зберігаємо і виходимо, потім перезапускаємо службу MySQL і все. Ця зміна є постійною.
2. Інший спосіб вирішення цієї проблеми – змінити максимальне обмеження, але за допомогою запиту MySQL.
Давайте спочатку покажемо поточний ліміт:
mysql --user="root" --password="PASSWORD" --execute='SHOW VARIABLES LIKE "max_connections";'
Це покаже нам щось подібне:
+ ----------------- + ------- + | Ім'я змінної | Значення | + ----------------- + ------- + | max_connections | 151 | + ----------------- + ------- +
Іншими словами, поточний ліміт - 151 з'єднання, ну, давайте піднімемо його до 500 за допомогою запиту:
mysql --user="root" --password="PASSWORD" --execute='SET GLOBAL max_connections = 500;'
Готовий!
Проблема таким чином полягає в тому, що при перезапуску служби ця конфігурація втрачається.
Щоб компенсувати цю деталь, ви можете створити сценарій bash, який перевіряє кожні X часу, або навіть додати рядок до блоку запуску або перезапуску демона
Але чому тоді я хочу знати цей 2-й варіант? … ну, це те, що я сказав. Але місяць тому сервер Ubuntu проігнорував метод №1, тому... у крайніх випадках дурної ОС у нас є другий варіант, який працює так само добре