Превышен лимит подключений к базе - как с этим бороться?

stifler_x
На сайте с 19.06.2008
Offline
193
2205

Возникла проблема. Сайт с вчерашнего вечера до 11 утра был недоступен...

Выдавало ошибку при подключении к базе данных.

Я чуть не поседел – АП Яндекса был ночью…

Оказалось, что превышен лимит подключений к базе.

Как бороться с этим чудовищем? Расскажите, а то я совсем ноль

[Удален]
#1

Менять хостера. А от того, что в момент апа ваш сайт был недоступен ,ничего не случится, ведь ап - это обновление выдачи на основе накопленных данных, а не в ночь апа все сайты дружно переиндексируются)

WwWork
На сайте с 07.02.2006
Offline
150
#2

к хостерам обратитесь они расскажут.

Хотя я предвижу их ответ: оптимизируйте работу скрипта, или переходите на другой хостинг план.

--

Действительно надо подумать как сделать так чтобы в ваших скриптах было меньше запросов.

[Удален]
#3
WwWork:

Действительно надо подумать как сделать так чтобы в ваших скриптах было меньше запросов.

Думается, лимит подключений к базе - это не запросы, а именно подключения. Т.е. либо для каждого запроса идёт новое подключение, а потом разъединение, либо одно из двух )

WwWork
На сайте с 07.02.2006
Offline
150
#4

имеется ввиду что mysql_connect -mysql_close() это один коннект. возможно в одном скрипте их будет куча.

это уже по месту надо смотреть

stifler_x
На сайте с 19.06.2008
Offline
193
#5
nikitian:
ап - это обновление выдачи на основе накопленных данных

Это я знаю, но стремно как-то :)

WwWork:
к хостерам обратитесь они расскажут.

Обратился, но менять ничего не предлагали... хостер сказал, что нужно постоянно следить за наличием зависших подключения к базе (в процессы виснут что-то там...).

У меня подключения к базе зависли и их собралось много..

[Удален]
#6

Может mysql_pconnect используется? Тогда достаточно и одного на страницу,но без закрытия соединения, чтобы породить "висяки".

stifler_x
На сайте с 19.06.2008
Offline
193
#7
nikitian:
Может mysql_pconnect используется?

Походу он и используется. Но почему-то за полгода такое впервые. Никакие процессы раньше не висли… Как «снимать» зависшие процессы? Могу ли я это сделать? Это постоянно надо их отслеживать?

[Удален]
#8

stifler_x у меня частенько такое бывает, но я не обращаю на это внимания, при необходимости рестарт мускула и всё, юзаю обычный коннект к базе pconnect вообще никогда не использую. Хотя тоже было бы интересно узнать способ борьбы с этим.

edogs software
На сайте с 15.12.2005
Offline
775
#9

1) Если это ограничение хостера и хостера никак не сменить, но нужно именно обойти это ограничение, то нередко работает следующий простой способ. Создаете второго юзера и даете ему права на соединение такие же как первому.

Ограничение "по стандарту" на кол-во коннектов как правило действует в отношении каждого конкретного юзера. Чуть чуть доработав скрипт, что бы он через раз выбирал другого юзера для коннекта, можно удвоить свои возможности.

Например банально так


if(mt_rand(1,2)==1) {//коннект через одного юзера
} else { коннект через другого }

Способ с точки зрения "этики" не так некорректен как может показаться, т.к. никто не мешает хостеру ограничивать кол-во коннектов на аккаунт или не разрешать создавать несколько разных юзеров для доступа к БД. Т.е. фактически это может быть и недокументированный, но уж точно не хакерский способ.

2) К вопросу о pconnect. В случае наличия такой проблемы, нередко помогает вариант как раз избавиться от pconnect. Не будем сейчас вдаваться в детали почему, но как бы это не казалось странно, именно обычный connect нередко помогает в таких ситуациях, и это обосновано.

3) Проверьте не "подвисают" ли у Вас некоторые скрипты дольше чем необходимо. Может быть ситуация, когда они выполняются дольше чем Вы ожидали и держат коннект к базе не закрытым. Особенно если Вы выставили ignore_user_abort. Запрашивающему уже Ваша страница не нужна, он ее закрыл, а скрипт еще работает и отваливается только по таймауту допустим, все это время держа занятый "слот" коннекта.

KosoyRoman:
stifler_x у меня частенько такое бывает, но я не обращаю на это внимания, при необходимости рестарт мускула и всё, юзаю обычный коннект к базе pconnect вообще никогда не использую. Хотя тоже было бы интересно узнать способ борьбы с этим.

Если у Вас есть права на рестарт мускула, может Вам проще увеличить кол-во возможных коннектов к базе в конфигурации мускула? Благо это одна строчка в my.cnf: max_connections=200 или другое число и всего делов.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
zhidronsss
На сайте с 12.10.2007
Offline
36
#10

у хостера поузнавайте лимиты на подключения

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий