SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.05.2015 13:30:47

QMySQL
Участник
Зарегистрирован: 01.02.2015
Сообщений: 9

Что делать, когда "Too many connections"?

Добрый день.
Вчера встретился с новой для себя ошибкой - "Too many connections". В связи с этим появились вопросы:
1. Когда интернет-страница загружена на 100% - нужно производить отключение от БД?
2. Если клиент закрыл страницу/браузер/выключил компьютер - что делается с соединением? Еще живет или умирает?
3. Как эта проблема решена, например, у ebay, amazon... где всегда много пользователей?

Неактивен

 

#2 18.05.2015 13:33:54

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Что делать, когда "Too many connections"?

1. по завершению php-скрипта, соединение с базой разрывается, если не было persistent подключения
2. это никак не влияет на работу сервера - сервер отвечает за запросы отдельных страниц
3. решений много разных, детали см. в трудах конференции Highload++, например

Обычно too many connections указывает на то, что запросы отрабатываются сервером медленно. Изучите медленные запросы

Неактивен

 

#3 18.05.2015 13:47:25

QMySQL
Участник
Зарегистрирован: 01.02.2015
Сообщений: 9

Re: Что делать, когда "Too many connections"?

Подключение к БД идет стандартно:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');


Мой сайт находится на виртуальном хостинге. Возможно из-за этого?

Неактивен

 

#4 18.05.2015 14:05:21

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: Что делать, когда "Too many connections"?

Скорее всего дело именно в том, что запросы выполняются слишком долго. Выполните SHOW FULL PROCESSLIST - увидите какие запросы выполняются

Неактивен

 

#5 24.05.2015 15:01:00

high_plus_plus
Участник
Зарегистрирован: 24.05.2015
Сообщений: 6

Re: Что делать, когда "Too many connections"?

Ошибка too_many_connections что количество открытых соединений (потоков ) на mysql превысило значение системной переменной
max_connections.

Скорее всего такая ситуация вызвана медленным исполнением запросов либо некорректными настройками БД, тогда после завершения отправки ответа клиенту соединение остается открытым и вы быстро упираетесь в этот лимит.

Увидеть открытые потоки и ихстатусы вы можете с помощь команды SHOW FULL PROCESSLIST

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson