После тестирования своего сайта программкой AB я получил вполне ожидаемые результаты
Параметры теста: 50 одновременных запросов, всего 1000 запросов.
Страница была очень нагружена контентом и генерировала достаточное кол-во запросов к БД.
У залогиненного пользователя:
Time per request: 166.014 [ms] (mean, across all concurrent requests)
Transfer rate: 199.63 [Kbytes/sec] received
У анонима (работает кеширование):
Time per request: 5.418 [ms] (mean, across all concurrent requests)
Transfer rate: 6113.97 [Kbytes/sec] received
Результаты понятное дело очень сильно отличаются, из-за того что у залогиненого пользователя не работает кеширование.
Вопрос: возможно ли как-то лимитировать количество запросов от одного пользователя? Например, так сделано ВКонтакте — нельзя делать более 1 запроса в секунду от 1 пользователя. Друпалу это могло бы сильно помочь при защите от DDoS-атаки, если атакующий ограничен в количестве учетных записей.
Комментарии
А модуль throttle не пробовали использовать, выключая всю тяжёлую функциональность при перенагрузке? Перенагрузка я так понимаю в этом же модуле и настраивается.
программкой AB --что за она?
Стандартная утилита Апача
Throttle, к сожалению, мало что дает, он лишь отключает модули при определенной посещаемости, отключать половину сайта -- совсем не вариант, да и не снимет это столько нагрузки.
Бонус производительности будет только при временном бане пользователя, который делает ненормальное количество запросов.
При распределённом DDoS банить весь инет будете?
Напишите модуль, который будет недопускать более 1 запроса в секунду от пользователя.
На мой взгляд не так уж сложно такой модуль написать.
Банится не подсеть, а конкретный пользователь. Написать модуль — выход вполне очевидный и платный, просто хотелось бы знать может есть аналогичные модули уже.
тоже интересуюсь, очень хочется потестировать
гыгыгыгыгы. Модуль из hook_init() и flood_is_allowed() например, а раздули...
RxB, вы предлагаете модуль написать? может он уже написан?