Превышение предела запросов к базе данных

Аватар пользователя MaxPal MaxPal 31 октября 2009 в 17:57

Кто сталкивался с такой проблемой?
сайт не грузится, вместо этого выдает:
Warning: User 'user1' has exceeded the 'max_questions' resource (current value: 150000) query: SELECT u.*, s.* FROM users u INNER JOIN sessions s ON u.uid = s.uid WHERE s.sid = 'd75024909960986ff7adde997bf45991' in /mounted-storage/home119c/sub005/sc61554-JTMN/www/includes/database.mysql.inc on line 172

Включал модуль попросил хостеров увеличить предел (был 100000 запросов , увеличили сначала до 120к, потом до 150к), не помогло
отключил некоторые нагружающие базу данных модули (locale, например).
Читал о способе решения проблемы, когда создаются экстра юзеры для БД, но для меня это неприемлемо, так как хостер не предусматривает такую возможность. Хостинг Servage.net

Сайт лежит почти сутки, помогите пожалуйста.

Комментарии

Аватар пользователя axel axel 1 ноября 2009 в 14:19

Ограничение числа запросов к базе - мягко говоря дебилизм. Админ в саппорте узнал, что mysql имеет такую опцию и на радостях задействовал её по своему усмотрению - только от нагрузки на mysql это никак не спасает. Положить mysql можно одним тяжёлым запросом, абсолютно также как кучей мелких. Drupal не отличается от многих cms своей любовью генерировать уйму мелких запросов - на настроенном mysql это не страшно. Никак не выход, когда разработчики вебприложения любым путём стремятся снизить число запросов к базе - очень вероятный результат на выходе: тяжёлые запросы с кучей объединений по десяткам таблиц - вреда от них даже больше. Поэтому оптимальный выход - перейти на другой хостинг.

Тем не менее можно снизить несколько число запросов включив агрессивное кеширование в друпале, не использовать pathauto и path (и после их отключения почистить таблицу алиасов), еще можно поставить модуль no_anon, который отключает ведение сессий для анонимных посетителей - сэкономим на inserts которые срабатывают на каждом посещении поискового робота или случайного посетителя на сайте (поправка: no_anon только для drupal6). Ещё можно вынести кеширование из таблиц в файлы (см. модули на drupal.org).

В заключение снова повторю рекомендацию - сменить хостера. Использование ограничений на число запросов к mysql при хостинге для вебприложений - по-моему это признак неграмотности админов, настраивавших хостинг, а значит им не стоит доверять и в остальных серверных настройках.

Аватар пользователя MaxPal MaxPal 2 ноября 2009 в 21:59

Спасибо, приму во внимание.
Особенно заинтересовали модули, переносящие кеширование в файлы

а хостеры действительно огорчили
Просил увеличить (за отдельную плату) размер базы и кол-во доступов к ней, или купить у них же VPS, сказали, что такие услуги не предоставляют Sad

Аватар пользователя MaxPal MaxPal 4 ноября 2009 в 20:30

Кстати, кто может посоветовать модули, которые выносят кеширование из таблиц в файлы? я попробовал filecache и fastpath_fscache
первый, как мне показалось, вообще не работает, а второй выдает ошибки...

И еще вопрос, как оптимизировать работу модулей path, search и locale? можно ли тоже хранить данные в файлах, а не таблицах?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 4 ноября 2009 в 21:37

path - где-то было решение, на этом сайте, типа кеширования алиасов, но в ходе дебатов вроде решили что толку от него мало.
search - поставить гугловский, или съехать на VPS и туда поставить Сфинкса
locale - экспортировать перевод из БД, загнать его в settings.php

Аватар пользователя MaxPal MaxPal 4 ноября 2009 в 23:20

Спасибо за совет!
Насчет третьего пункта, не могли бы вы поподробнее рассказать, как это делается?

Аватар пользователя MaxPal MaxPal 7 ноября 2009 в 12:20

RxB, спасибо, хотя ваша ирония напрасна Smile
я нашел пару десятков тем, а эта как раз прошла мимо...потому и попросил помощи

Аватар пользователя MaxPal MaxPal 13 ноября 2009 в 11:45

Может кто подскажет, какой модуль лучше установить для кеширования в файл?
дело в том, что перепробовал уже 3 (fastpath_fscache, filecache, cacherouter ), ни один не заработал

Аватар пользователя voidmain voidmain 19 ноября 2009 в 15:56

Servage? Присоединяюсь к предложению бежать от них как можно быстрее.

Сам был у них пару месяцев, потом ушёл на VPS, и вам того же советую. Servage сейчас иногда вспоминаются, как страшный сон. А MySQL у них стоит на отдельном сервере, который общается с apache через сеть, что уже нехилый bottleneck.