[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Частые обращения к сайту
bposter
Добрый день, не давно знакомый показал как уложить сай на лопатки, зажимаеш кнопку F5 и держиш секунд 10 и сайт ложится не все сайты конечно но мой самописный ложится, что можно сделать чтоб такого небыло?



Спустя 1 минута, 58 секунд (10.10.2012 - 12:02) Игорь_Vasinsky написал(а):
ограгичить запросы к сайту по времени, например 3-5 сек 1 запрос, но не по IP - бери всё что можешь у юзера + IP

на этом форуме флуд контроль видел?

Спустя 2 минуты, 35 секунд (10.10.2012 - 12:05) bposter написал(а):
Да видел, а как реализовать ? может есть готовое решение у кого нибудь?

Спустя 18 минут, 4 секунды (10.10.2012 - 12:23) Игорь_Vasinsky написал(а):
Даже проще оказалось)

<?php
#error_reporting(E_ALL);
header('Content-Type: text/html;charset=UTF-8');
session_start();

$limit = 5;

if(isset($_SESSION[session_id()]) AND (time()-$_SESSION[session_id()]) <= $limit)
exit('Фууууу.. ддоссер.... кышь!');
else
$_SESSION[session_id()] = time();

?>

Спустя 7 минут, 12 секунд (10.10.2012 - 12:30) bposter написал(а):
Спасибо

Спустя 2 минуты, 47 секунд (10.10.2012 - 12:33) Игорь_Vasinsky написал(а):
сам в шоке.

Спустя 25 минут, 36 секунд (10.10.2012 - 12:59) bposter написал(а):
А поисковые роботы как часто обращаются к сайту? чтоб им не выдавало сообщения о частых обращениях

Спустя 2 минуты, 1 секунда (10.10.2012 - 13:01) dron4ik написал(а):
ну самый простой как по мне вариант то создавать куку на 3-5 сек, и если она есть то не пускать)))

Но не работает если куки отключить, тогда пробуем сессию, Игоря...

За поисковик не переживай, он поймет и простит!)

Спустя 3 минуты, 23 секунды (10.10.2012 - 13:04) Игорь_Vasinsky написал(а):
тоже задумался.

нужно простую проверку на известных USER_AGENT ботов написать и если бот - то не включать этот код.

http://www.tengy.ru/bot.html

Цитата
ну самый простой как по мне вариант то создавать куку на 3-5 сек,


если есть вероятность что этот кусок у кого то будет не работать - то он нафиг не нужен.

сессия живет на сервере - и не зависит от юзера, он будет в любом случае при заходе.

Спустя 2 минуты, 35 секунд (10.10.2012 - 13:07) Hello написал(а):
Цитата (dron4ik @ 10.10.2012 - 13:01)
Но не работает если куки отключить, тогда пробуем сессию, Игоря...

Сессия с отключенными куками?

Спустя 4 минуты, 7 секунд (10.10.2012 - 13:11) Игорь_Vasinsky написал(а):
Цитата
Сессия с отключенными куками?

да да . погоречился. если куки выключать то нужно другую идентификацию собирать



вообще я бы так сделал чтоб не гадать, вдруг агенты у ПС изменились

<?php
#error_reporting(E_ALL);
header('Content-Type: text/html;charset=UTF-8');
session_start();

$limit = 5;

if(isset($_SESSION[session_id()]) AND (time()-$_SESSION[session_id()]) <= $limit)
{
file_put_contents('ddos.log', $_SERVER['USER_AGENT'].PHP_EOL, FILE_APPEND);
exit('Фууууу.. ддоссер.... кышь!');
}
else
$_SESSION[session_id()] = time();

?>


т.е. писал бы всех "доссеров" в лог и анализировал, если бот попался - то ставлю для его агента исключение.

кстати если боты такие шустрые - то обидно.

CURLом парсить будут безбожно -а ты не сном не духом :unsure:

Спустя 9 минут, 8 секунд (10.10.2012 - 13:20) dron4ik написал(а):
Цитата (Игорь_Vasinsky @ 10.10.2012 - 10:04)
если есть вероятность что этот кусок у кого то будет не работать - то он нафиг не нужен.

Ну на закрытых сайтах разве что...

А по правильному то писать посетителей нужно)))
Но опять таки, если сайт простой и на дешевом хосте то не рационально(((

Потом--------

А по самому правильному, это задача хостера)))

Спустя 15 минут, 20 секунд (10.10.2012 - 13:35) killer8080 написал(а):
А может лучше кеширование использовать? rolleyes.gif

Спустя 19 секунд (10.10.2012 - 13:36) bposter написал(а):
Время покажет если сайт про индексируется то гуд. Буду ждать.

Спустя 2 минуты, 47 секунд (10.10.2012 - 13:38) Invis1ble написал(а):
если не ошибаюсь, в robots.txt можно указать лимит частоты запросов

Спустя 5 минут, 28 секунд (10.10.2012 - 13:44) Игорь_Vasinsky написал(а):
кеширование в память не каждый хостер memcached ставит, на уровне ngnix в основном

файловый кэш - не каждому подойдёт, у меня так 500 метров под завязку постерами для кеша где то 300 мб надо.

Спустя 2 минуты, 9 секунд (10.10.2012 - 13:46) killer8080 написал(а):
Игорь_Vasinsky
сделай кеш экспайр поменьше, минут на пять. И кроном стартуй свой гарбидж коллектор.

Спустя 22 минуты, 57 секунд (10.10.2012 - 14:09) Игорь_Vasinsky написал(а):
killer8080
вот ты молодец)) у меня и так есть он, 10мин уже снизил - но 10 минут и крон чистит, тока этого не достаточно оказалось

после чистки от мусора кэш страницы весит 60-70кб

100 заходов пользователей на разные страницы это 6-7мб

1000 = 60-70мб.

а скока страниц может человек прошуршать просматривая и подбирая фильмы для просмотра за 10 мин? 30-40 - по себе сужу т к всё давно пересмотрел, может чё упустил - вот и ищу.

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


Спустя 6 минут, 47 секунд (10.10.2012 - 14:16) killer8080 написал(а):
Игорь_Vasinsky
еще как вариант, в базе хранить связку url | update_date. При выдаче контента выдавать заголовок Last-Modified. При наличии в запросе заголовка If-Modified-Since, сверять дату, если не истек, выдавать 304 статус, без контента. По крайней мере от зажатого Ф5 это будет эффективно, и снижает трафик.

Спустя 9 минут, 33 секунды (10.10.2012 - 14:25) Игорь_Vasinsky написал(а):
Цитата
По крайней мере от зажатого Ф5

хоть и по теме, но я уже расширил о своих проблемах

у меня ужасную нагрузку могут создать живые люди и с кэшем я взаднице

у меня на каждой странице

1 запрос в БД к 3м таблицам с пагинатором

инфо фильма
кол-во просмотров
рейтинг


1 такой же на вывод топа по просмотра
1 такой же на вывод топа по рейтингу

+ запрос нажанры всей таблицы - потом фильтровка массива и вывод категорий - сделал так - чтобы категории автоматом строились.


хз 1к держал, а дальше не знаю что хостер скажет


за сутки щас листают до 1600 страниц.

Спустя 2 минуты, 33 секунды (10.10.2012 - 14:28) Игорь_Vasinsky написал(а):
а это
Цитата
еще как вариант, в базе хранить связку url | update_date.

тока дишние запросы в БД, мне своих хватает

надо докупить ещё 500 метров и включать файловый кэш

Спустя 21 секунда (10.10.2012 - 14:28) killer8080 написал(а):
Цитата (Игорь_Vasinsky @ 10.10.2012 - 14:25)
хз 1к держал, а дальше не знаю что хостер скажет

скажет арендовать сервер, а потом и датацентр biggrin.gif

Спустя 3 минуты, 6 секунд (10.10.2012 - 14:31) VELIK505 написал(а):
Надо с микроддосом на уровне nginx решать вопросы.
В nginx.conf можно задать:
limit_conn one "количество одновременных соединений" ;
limit_req zone=two burst = "скоко обращений";
перед этим указав rate
rate=2r/s - считаеться вполне нормально для посетителя всё что выше попадёт под burst и далее -> error 503.
и также ngx_http_limit_req_module решает более сложные задачи вплоть до вязки с файрволом

Спустя 54 секунды (10.10.2012 - 14:32) Игорь_Vasinsky написал(а):
ну щас он в месяц 600-1000р приносит в принципе стоит задуматься уже.

VELIK505
у меня виртуальный хостинг)

Спустя 1 минута, 52 секунды (10.10.2012 - 14:34) VELIK505 написал(а):
Цитата (Игорь_Vasinsky @ 10.10.2012 - 11:32)
ну щас он в месяц 600-1000р приносит в принципе стоит задуматься уже.

VELIK505
у меня виртуальный хостинг)

так а на виртуальном хостинге у них же всё настроено по зонам вот скачай даже лоик попробуй подолбить сайт на вирт хосте тебя сразу в файрвол кинет.


_____________
Вязание xe4.ru спицами.
Сайт для тестов (подопытный №543)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.