Перейти к контенту
  • 0

Ошибка "Too many connections", необычный случай


palach

Вопрос

Начну с того, что в поиске порылся хорошенько.

Немного вводных.

Сайт жил на хостинге, потреблял прилично ресурсов и, как многим, нам предложили переехать на выделенный сервер.

Мы арендовали сервер, перенесли сайт.

Характеристики сервера достаточные, по моему мнению для сайта с посещаемсотью около 9000 человек в сутки.

После переезда часто стала повляться ошибка "Too many connections".

Я обратился к хостеру, мне написали, что лимит - 270 соединений, а использовано - порядка сорока.

Саппорт сказал, что дело в скрипте.

Я проконсультировался у знающих ipb, сказали - снова к саппорту.

Вот одна из переписок с саппортом:

 

" "> Здравствуйте, saupport!

> Снова ошибка:

> mySQL error: Too many connections

> mySQL error code:

> Date: Wednesday 16th of November 2005 10:28:24 PM

> Уже не знаю, что с этим делать.

> До какого количества можно увеличить кол-во соединений без каких-либо

> негативных последствий?

 

увеличением лимита проблему не решить.

в норме используется порядка 15-20 коннектов одновременно

лимит стоит 270.

 

теперь прикинем, если кто-то или что-то "седает" 250 коннектов за 10 минут

допустим, сколько ему понадобится времени, чтобы занять 1000 коннектов?

как сами думаете - эта маленькая отсрочка решит проблему?

 

у нас два сервера хостинга с сотнями сайтов используют в пике 200-250

коннектов, не больше.

а тут один сайт и один скрипт.

 

Вот саппорт предположил причину:

 

> судя по тому, что я сейчас наблюдаю, проблема в запросах вида:

>

> UPDATE LOW_PRIORITY ibf_members SET login_anonymous='0&1',

> last_activity=1132200823 WHERE id=7003.

>

> почему то они приводят к блокировке таблицы, соответственно скапливается

> огромное число соеденений, ожидающих окончания блокировки.

>

> вот с этим надо что то делать, иначе никакое увеличение лимитов не

> поможет."

>

 

 

 

надо подумать, это нормально - такое количество анонимных соеденений?

 

еще возникает вопрос - вот выдержка из документации на mysql:

 

If you use the LOW_PRIORITY keyword, execution of the UPDATE is delayed

until no other clients are reading from the table.

 

если чтение из таблицы происходит очень часто, допустим при любом

обращении клиента к сайту - то скрипт ведь может и недождаться такого

момента, так ли необходима опция LOW_PRIORITY ?

 

пока я сделал вот что - сильно уменьшил время таймаута по соеденению

т.е. такие зависшие соеденения по идее будут просто быстро отваливаться

может чем то поможет."

 

Ошибка все ровно появляется.

 

Что посоветуют знатоки данного форума?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

=======

Мы арендовали сервер, перенесли сайт.

=======

Конфиг. сервера не написали.

 

В вашем случае достаточно гостям запретить просмотр форума, как проблемы временно исчезнут.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
=======

Мы арендовали сервер, перенесли сайт.

=======

Конфиг. сервера не написали.

 

В вашем случае достаточно гостям запретить просмотр форума, как проблемы временно исчезнут.

не хочу спорить со специалистом, но насколько я помню, запреты в админке никак не влияют на обращение гостей к базе форума.

Запросы всё равно происходят, или я ошибаюсь?

 

А вот ЛоуПриорити при запросах к самой часто используемой таблице - маразм.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

-------

Запросы всё равно происходят, или я ошибаюсь?

-------

Число запросов резко снизится. :D

(так как для гостей не будет обращений к базе для вывода форума, топиков, постов)

 

 

-------

не хочу спорить

-------

Спорить, конечно не надо, достаточно лишь проверить.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Число запросов резко снизится. :D

(так как для гостей не будет обращений к базе для вывода форума, топиков, постов)

Точно. Об этом не подумал ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Valera, спасибо за совет, но данный метод неприемлем, так как гости - делает посещаемость ресурсу и со временем становятся его пользователями.

Есть ли еще какие-либо методы?

 

" вот ЛоуПриорити при запросах к самой часто используемой таблице - маразм." - объясните, пожалуйста, что это значит?

Может это поможет решить проблему?

 

Благодарен авторам выше за оперативный ответ.

 

Вот конфигурация сервера:

"1U, Pentium4 2.8GHz, 2Gb оперативной памяти , 2х 160Gb SATA HDD"

Ссылка на комментарий
Поделиться на других сайтах

  • 0

сервер довольно мощный.

http://www.linuxshop.ru/lib/mysqloff/Table_locking.html

надо спрашивать у Songа, я лично не представляю что будет если вместо лоу_приоритет поставть HIGH_PRIORITY.

Ссылка на комментарий
Поделиться на других сайтах

  • 0
У меня тоже такое иногда бывает. Но это из-за загрузки самого сервера хостера. Напихали блин клиентов :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0
попробуй просто убрать LOW_PRIORITY, скорость скриптов будет чуть меньше, зато не будет "зависших запросов" Изменено пользователем профф
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.