Как обрабатывать массивные запросы с помощью вызовов ajax - PullRequest
0 голосов
/ 26 апреля 2018

Я выполнил этот тест:

На моем "Raspberry Pi" я размещаю веб-сайт

Затем, когда я загружаю веб-сайт, я открываю DevTools и помещаю этот код:

setInterval(function(){
  $.ajax({ 
        success: function(result){
           console.log(result);
        }
     });
 },1);

Это делает запрос на одну и ту же страницу каждые 1 мс

10 секунд после того, как я получаю эту ошибку "net :: ERR_INSUFFICIENT_RESOURCES"

В этом случае "raspberry pi"я знаю, но тот же самый тип массового запроса на веб-хосте должен привести к замедлению работы сервера.

Мой вопрос в производственной среде, каков наилучший способ избежать такого масштабного внедрения запроса?

Должен ли php (в моем случае) обрабатывать эти запросы?такое Apache?Брандмауэр?

Спасибо за ваше время, ребята.

1 Ответ

0 голосов
/ 26 апреля 2018

net::ERR_INSUFFICIENT_RESOURCES - это ошибка Google Chrome, просто браузер говорит, что не может обрабатывать больше данных, возможно потому, что у вас слишком много параллельных вызовов AJAX.

В этом случае ваш Raspberry Pi не являетсявиновник и работает просто отлично, только ваш код на стороне клиента нуждается в некоторой оптимизации, например, вы можете подождать, пока предыдущий вызов ajax завершится успешно, перед отправкой другого.

Я думаю, ваш вопрос был больше о«Как справиться с DOS-атаками», если вы хотите защитить себя от DOS-атак, одним из лучших (на мой взгляд) методов будет Fail2Ban (или любой эквивалент), он позволяет вам использовать Apacheдоступ к журналу (или любой другой журнал), чтобы обнаружить вредоносный запрос.Вы можете настроить его так, чтобы он определял, когда клиент отправляет слишком много запросов, а затем блокирует его IP-адрес.

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

Этоотличный подход, когда у вас есть только один злонамеренный клиент, в случае DDOS (распределенная DOS) вам, возможно, придется обрабатывать тысячи различных IP-адресов, приходящих отовсюду, в этом случае Fail2Ban подобен бинту на открытой ране.DDOS действительно трудно противостоять, и вы, вероятно, хотите, чтобы внешний сервис обрабатывал его для вас (например, Cloudflare)

Надеюсь, я ответил на ваш вопрос, хорошего дня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...