[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Превышение лимита соединений с БД
Astfreelancer
На сайте стоит Joomla 2.5.24. Периодически сайт прекращает работать из-за превышения лимита подключений к БД (кажется, 50). Посещаемость около 50-70 человек в день. От спама надежно защищены.
Погуглив, выяснила, что проблема может быть в сессиях, и таблицу #_session надо чистить руками. Первый раз, когда я так сделала, сайт мгновенно заработал! Но во второй и последующие разы phpMyAdmin стал просто зависать на этом запросе.
Написала скрипт для вывода из таблицы #_session списка, кто зашел на сайт. Почти исключительно боты.
Запретила доступ ботам как в robots.txt, так и в коде index.php:
$botnames = array('AhrefsBot', 'Ezooms');
foreach ($botnames as $bot)
if (strstr($_SERVER['HTTP_USER_AGENT'], $bot) !== false)
die;

В результате число сессий в таблице стало держаться на уровне 200.
Потом все равно стала появляться та же проблема: время от времени ошибка подключения к БД. Наутро обычно все восстанавливается само собой.
Каждый раз, как сайт перестает работать, пишу в службу поддержки, но они почему-то отвечают только тогда, когда сайт возобновляет работу. И отвечают, что, мол, всё работает. Никаких конкретных рекомендаций не дают.
Можно как-то узнать конкретные данные: что создает такую нагрузку на сайт?
bestxp
сколько коннектов открывает за раз джумла?
Какие типы коннектов открывает постоянные или нет?
Закрываются ли коннекты по завершению?

Да это низкоуровневое, а так же что пишут на профильных сайтах?
Astfreelancer
bestxp, на профильных сайтах именно и пишут о проблеме с сессиями, но вроде бы я ее уже решила. Джумла создает сессии не только для зарегистрированных пользователей, но вообще для всех посетителей, вплоть до ботов. Отсюда и проблема.
А как определить число соединений?
Если бы проблема была в Джумле, то на всех сайтах с Джумлой была бы такая же ситуация.
Забыла написать, что кэширование я тоже включила, не особо помогло.
bestxp
ну так сессия стартует автоматически везде, а не только для нового активных

а в от как оно с ними работает это уже другой вопрос
Astfreelancer
Наверное, проблема действительно в незакрытых соединениях. SHOW PROCESSLIST мне показывает всего два моих собственных соединения. Значит, прав на просмотр и тем более удаление чужих соединений у меня нет. Получается, я не могу даже самостоятельно убить все соединения, чтобы восстановить работу базы данных.
VELIK505
смотрите значение max_connections в my.cnf я всегда ставлю 1000
FatCat
В движке этого форума соединение закрывается по завершению генерации страницы. Это было в IPB 1.3, и это то немногое, что осталось в этом движке от инвижна.
Поэтому даже когда была ДДоС-атака с нескольких тысяч айпишников, тормозил php, тормозил апач, тормозила БД, но проблемы лимита соединений с БД не было.

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.