- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте!
Имеется проблема с падением сервера при большом кол-ве однообразных запросов.
Сервер:
VDS SSD
8 GB RAM
60 GB SSD
6 ядер CPU
Сайт на Wordpress
Посещаемость ~15.000 посетителей в сутки. Сайт работает без статичного кеширования страниц, использую только memcache. Производительность устраивает, но:
1. Сегодня какой-то умник 8000 раз за 20 минут запросил одну и ту же страницу вида site.ru/category/?id=<случайное число>&msg=
В результате чего все 20 минут сайт был в ауте, как только умник пропал - сайт стабилизировался.
Все это время выдавалась ошибка соединения с базой данных. Процессор был загружен на 100% и в htop висело куча процессов:
/usr/bin/php-cgi php (обычно их 15-20 одновременно, а в это время было больше 50)
2. Я выяснил что если зажать на любой странице сайта клавишу F5 и удерживать ее - происходит то же самое, т.е. сайт зависает, процессор грузится и т.д.
У умника, который запрашивал 8000 раз страницу IP был всегда один и тот же.
Вопрос: Как бороться с этим? Получается что любой человек может зайти на сайт, зажать F5 и положить его.
Как бороться — nginx нормально настроить.
Вопрос: Как бороться с этим? Получается что любой человек может зайти на сайт, зажать F5 и положить его.
Как вариант, можно и вот так.
Можно настроить кэширование на стороне клиента по заголовкам If-modified-since <-> Last-Modified. Тогда при нажатой <F5> браузер будет брать страницу из своего кэша.
Но может появиться вопрос о нажатой <Shift + F5> или <Ctrl + F5> :)
Можно и нужно поставить модуль кэширования WP.
PS: А вообще, бороться с http-флудом надо ограничением количества подключений с одного IP в единицу времени.
Но может появиться вопрос о нажатой <Shift + F5> или <Ctrl + F5>
Ну F5 только я тыкал, не замечал что бы кто-то такой гадостью занимался. А вот запросы на одну и ту же страницу вида sute.ru/?id=<рандом число>, с одного IP - довольно частое явление.
Спасибо, судя по описанию то что надо. Есть только вопрос: там как я понял автор ставит ограничение в 2 запроса в секунду с одного IP - это чиcло должно как то зависеть от посещаемости, или 2 это "универсально"?
limit_req настройте, как RichUp предложил и забудьте про таких умников.
C limit_conn тоже поиграйте.
ограничение в 2 запроса в секунду с одного IP - это чиcло должно как то зависеть от посещаемости, или 2 это "универсально"?
Учтите, что современные браузеры качают скрипты и картинки параллельно, и не перебаньте роботов ПС под горячую руку.
Учтите, что современные браузеры качают скрипты и картинки параллельно, и не перебаньте роботов ПС под горячую руку.
Статику обычно не лимитируют, только скрипты :)
А как протестить автоматически, зависнет ли сервак при зажатии? А то как-то не комильфо тестить свой сервер в ручную, думаю. Может есть софт?
Я для теста нагрузок использую сервис:
loadimpact.com
Может есть софт?
Apache => ab