Всем доброго времени суток!
Опишу вкратце - недели 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 - вообще не представляю куда копать.
Спасибо заранее!
Комментарии
Поставил, нагрузка пока не падает. Нет идей, что делать с variable? Эта таблица хранит переменные модулей... И раньше, когда нагрузка была низкой, этот запрос почти не фигурировал.
ничего не делать.
ждать, либо есть возможность, то настраивать кастомные правила, чтоб банило к чертям спамерастов
Уже и по IPшникам забанил, и по страницам, которые бомбят...
Нашёл вот такую инфу:
"Частое использование variable_set() влияет на производительность
Переменные в Drupal хранятся в специальной таблице в формате: имя — сериализованное значение. При каждом запросе все переменные загружаются из кеша в глобальную переменную $conf.
Во время сохранения каждой переменной происходит следующее:
Обновляется запись в базе данных
Очищается кеш
Когда следующий запрос обнаруживает, что нет кеша для таблицы переменных, все переменные загружаются, и записываются в кеш.
При большом количестве переменных это может занять достаточно много времени. В Drupal реализована система блокировки и любые долго выполняющиеся операции, параллельно которым, скорее всего, будут поступать другие запросы, должны пытаться перед началом работы получить блокировку. Если предыдущий запрос очистил кеш переменных, следующий запрос будет его перестраивать, поэтому очень частое использование функции variable_set() может привести к массовой блокировке таблицы, из-за того, что десятки запросов ждут новой записи кеша таблицы переменных, который может стать устаревшим прежде чем его извлекут для использования."
"В Drupal реализована система блокировки" - вот эта часть интересна, но как её заюзать - не написано. Может быть знаете что-нибудь про это?
никто не спорит, но у вас чтение, а не апдейты
на свой сервак надо переезжать и там уже настраивать - http://saitodelatel.ru/zashchita-ot-botov-fail2bancsf-servera-nginx-c-dr...