Нагрузка на хостинг превышает допустимую в несколько раз

Главные вкладки

Аватар пользователя GodZiLA GodZiLA 13 мая 2015 в 9:37

Всем доброго времени суток!
Опишу вкратце - недели 1.5-2 назад на сайте нашли лазейку в виде открытой формы добавления одного из модулей. Добавили примерно 15к материалов - это было первыми нагрузками. Материалы я удалил, все формы позакрывал, вроде отбился.
Но через некоторое время спамеры начали грузить сайт тем, что стали ходить по созданным собой ссылкам, плюсом стали грузить страницы /users, site/*(и тысячи внутренних файлов) и node/add (сюда пробиться не могут - всё перекрыто).
В .htaccess я временно перевёл /user и node/add на 403, пробовал site/* перевести туда же - получается беда.
Запросил slowlog на хостинге - просто дичайшая нагрузка по запросу "SELECT * FROM variable" и
"SELECT node.nid AS nid, node.title AS node_title, node_data_field_public_preview.field_public_preview_fid AS node_data_field_public_preview_field_public_preview_fid, node_data_field_public_preview.field_public_preview_list AS node_data_field_public_preview_field_public_preview_list, node_data_field_public_preview.field_public_preview_data AS node_data_field_public_preview_field_public_preview_data, node.type AS node_type, node.vid AS node_vid, node.created AS node_created FROM node node LEFT JOIN content_type_public node_data_field_public_preview ON node.vid = node_data_field_public_preview.vid WHERE node.vid IN(XXX...XXX) ORDER BY node_created DESC LIMIT NNN, NNN"

Так вот, собственно, и вопрос. Кто-нибудь сталкивался или кто-нибудь знает, что можно предпринять с заходом роботов по созданным ссылкам (да и вообще по файлам сайта) и что делать с медленными запросами? Если с запросами к нодам всё понятно, то с variable - вообще не представляю куда копать.

Спасибо заранее!

Комментарии

Аватар пользователя GodZiLA GodZiLA 13 мая 2015 в 13:35

Поставил, нагрузка пока не падает. Нет идей, что делать с variable? Эта таблица хранит переменные модулей... И раньше, когда нагрузка была низкой, этот запрос почти не фигурировал.

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 13 мая 2015 в 13:52

"GodZiLA" wrote:
Поставил, нагрузка пока не падает. Нет идей, что делать с variable? Эта таблица хранит переменные модулей... И раньше, когда нагрузка была низкой, этот запрос почти не фигурировал.

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

Аватар пользователя GodZiLA GodZiLA 13 мая 2015 в 17:14

Уже и по IPшникам забанил, и по страницам, которые бомбят...
Нашёл вот такую инфу:

"Частое использование variable_set() влияет на производительность

Переменные в Drupal хранятся в специальной таблице в формате: имя — сериализованное значение. При каждом запросе все переменные загружаются из кеша в глобальную переменную $conf.
Во время сохранения каждой переменной происходит следующее:
Обновляется запись в базе данных
Очищается кеш
Когда следующий запрос обнаруживает, что нет кеша для таблицы переменных, все переменные загружаются, и записываются в кеш.

При большом количестве переменных это может занять достаточно много времени. В Drupal реализована система блокировки и любые долго выполняющиеся операции, параллельно которым, скорее всего, будут поступать другие запросы, должны пытаться перед на­чалом работы получить блокировку. Если предыдущий запрос очистил кеш переменных, следующий запрос будет его перестраивать, поэтому очень частое использование функции variable_set() может привести к массовой блокировке таблицы, из-за того, что десятки запросов ждут новой записи кеша таблицы переменных, который может стать устаревшим прежде чем его извлекут для использования."

"В Drupal реализована система блокировки" - вот эта часть интересна, но как её заюзать - не написано. Может быть знаете что-нибудь про это?