|
|
|
| pingbacks - есть такая фигня если сервер на запрос не ответил, например по причине большой очереди load average или проблем у интернет-провайдера (Ну очень заментно например на gprs вечерами), этот запрос вновь отправляется серверу. В обычном понимании это флуд например, когда если нет фильтра, то вот это мое сообщение добавит сюда, при моем или сервера зависании несколько раз. Фильтр на наличие этого сообщения в форуме решил чисто эстетическую задачу - а именно добавит только одно сообщение! Но! Сам то фильтр будет задействован по ситуации 2,3,4 ... до непонятных обьемов, связанных с количеством этих запросов! В итоге этот load average вырастает в обьеме еще больше, получается маленький непроизвольный DDOS со стороны юзера.
Если дело касается десятка юзеров онлайн то на это можно закрыть глаза, рано или поздно он получит ответ на свой запрос и загрузит свою запрошенную страничку.
Но если онлайн вечером сидят 200-300 человек и добрая часть из них долбит сервер этими повторными запросами ... Это уже проблема!
Вопрос наконец! =) Как перекрыть возможными функциями php или может на сервер что поставить для отсекания этих множественных повторных запросов?
Извенение перед модератором! Незнаю куда даже определить эту тему по смыслу! Тут и мне помогут советы по PHP, MySQL, Apache ... | |
|
|
|
|
|
|
|
для: Giga
(24.04.2008 в 23:21)
| | > Но! Сам то фильтр будет задействован по ситуации 2,3,4 ... до непонятных обьемов, связанных с количеством этих запросов! В итоге этот load average вырастает в обьеме еще больше, получается маленький непроизвольный DDOS со стороны юзера.
По твоему мнению с каждым новом запросом ты больше и больше гробишь сервер? | |
|
|
|
|
|
|
|
для: Atheist
(24.04.2008 в 23:28)
| | if(mysql_num_rows(mysql_query("SELECT id FROM forum WHERE tema='$tema'"))>0) {echo 'ФЛУД';}
---- Это простенькая функция антифлуда тем не менее скушает пускай десятую или сотую долю процессора и памяти. А если таких запросов сотни ... Это уже целые процентики ... И это уже рост load average! | |
|
|
|
|
|
|
|
для: Giga
(24.04.2008 в 23:38)
| | Во-первых, антифлуд плохой. Лучше записывать данные в сессию с CRC32 названия темы или что еще у тебя там, и сверять: во всяком случае ты определишь повторно отправленные данные по случайности. И никаких SQL-запросов.
Еще почему-то у тебя не может существовать двух тем с одинаковым названием.
Надо позаботиться о том, чтобы при обычной ситуации твой скрипт не трещал, уж куда там до DDoS.
Во-вторых, ты предлагаешь найти решение головной боли под названием DDoS. Это уже серьёзный вопрос, который на уровне PHP лучше не решать. Оптимизировать код - да, но защищаться от атак - тут уже не то "оружие".
Это делать лучше вообще на уровне железа - как Cisco. Больше ничего путного не скажу.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Atheist
(24.04.2008 в 23:49)
| | Чтобы сделать запрос еще хуже? Все эти спамы будут зарегистрированы и включены в файловую систему сервера, сессии в воздухе не рождаются и не живут. Таким образом, каждый дополнительный кусок спама сервер обработает и запишет, и будет брать немного системных ресурсов сервера, доля CPU и памяти, так и непосредственно в результате чего сервер для подлинного процесса аутентификации HTTP-запроса в интернете сработает еще медленнее. Следовательно, сайты и веб-страницы что размещаются на сервере будут загружатся более медленно, особенно на сервер с блогами, которые постоянно затоплены со спамом комментарии. Или чат крупный с толпой в несколько сотен человек! Или онлайн игра!
А пример ...
if(mysql_num_rows(mysql_query("SELECT id FROM forum WHERE tema='$tema'"))>0) {echo 'ФЛУД';}
|
На то он и пример! Это может быть что угодно! Вот вам еще пример ...
if(mysql_num_rows(mysql_query("SELECT id FROM chat WHERE post='$post' AND online<'".(time()-3)." AND avtor='$avtor''"))>0) {echo 'ФЛУД';}
|
И совсем меня ужаснуло И никаких SQL-запросов. А данные что в файлы записывать и оттуда вытаскивать строки для сверки??? Эта комбинация скушает еще больше ресурсов!
Оптимизировать код - да - стараюсь как могу =) И поэтому написал эту тему, ищу все возможные пути и варианты для выжимания производительности! Резонно конечно решить все проблемы сменой конфигурации сервера на более мощную. Но я так подумал - это не решение проблем а уход от них =) И если даже поменять сервер на более мощный, как ты говориш там Cisco или Dell, HP и даже если собрать кластер из всех Brandname в мире, это не решение проблем а уход от них =) | |
|
|
|
|
|
|
|
для: Giga
(25.04.2008 в 00:36)
| | > Чтобы сделать запрос еще хуже?
Это ты про CRC32? Сравни скорость вычисления CRC32 и записи в сессию с твоим запросом, чтобы не быть голословным.
> процесса аутентификации HTTP-запроса
Кто это аутентифицирует HTTP-запрос?
> И совсем меня ужаснуло И никаких SQL-запросов.
> А данные что в файлы записывать и оттуда вытаскивать строки для сверки??? Эта комбинация скушает еще больше ресурсов!
Голословное заявление: твои данные и так хранятся в файлах, только это делает СУБД - мощный механизм. Записать 4 байта (32 два бита - отсюда и 32 в названии CRC32) в сессию - плевое дело.
> И поэтому написал эту тему, ищу все возможные пути и варианты для выжимания производительности!
По-моему, ты пришёл устроить полемику.
Обоснуй, пожалуйста, все свои заявления. | |
|
|
|