【问题标题】:How to handle massive request by ajax calls如何处理ajax调用的海量请求
【发布时间】:2018-10-06 11:27:11
【问题描述】:

我进行了这个测试:

在我的“树莓派”上,我托管了一个网站

然后,当我加载网站时,我打开 DevTools 并输入以下代码:

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

这会每 1 毫秒向同一页面发出一次请求

10 秒后,我收到此错误“net::ERR_INSUFFICIENT_RESOURCES”

在这种情况下,我知道“树莓派”是有限的,但是在 webhost 上同样的大量请求应该会使服务器变慢。

我的问题是,在生产环境中,避免这种大规模请求注入的最佳做法是什么?

php(在我的情况下)应该处理这个请求吗? 是阿帕奇? 防火墙?

感谢您的时间。

【问题讨论】:

标签: php ajax apache server xmlhttprequest


【解决方案1】:

net::ERR_INSUFFICIENT_RESOURCES是谷歌浏览器的错误,只是浏览器说它不能处理更多的数据,可能是因为你有太多的并行AJAX调用。

在这种情况下,您的 Raspberry Pi 不是罪魁祸首,并且工作正常,只是您的客户端代码需要一些优化,例如,您可以等待上一个 ajax 调用成功,然后再发送另一个。

我猜你的问题更多是关于“如何处理 DOS 攻击”,如果你想保护自己免受 DOS 攻击,最好的方法之一(在我看来)是Fail2Ban(或任何等价物),它允许您使用您的 Apache 访问日志(或任何其他日志)来检测恶意请求。您可以将其设置为检测客户端何时发送过多请求,然后禁止其 IP。

网上教程很多,这里就不详细介绍如何使用了

当您只有一个恶意客户端时,这是一种很好的方法,在 DDOS(分布式 DOS)的情况下,您可能必须处理来自世界各地的数千个不同的 IP,在这种情况下,Fail2Ban 就像一个创可贴开放性伤口。 DDOS 真的很难对付,您可能需要一个外部服务来为您处理(例如 Cloudflare)

希望我回答了你的问题,祝你有美好的一天

【讨论】:

  • 感谢您抽出宝贵时间?我将阅读更多有关 fail2ban 处理 ddos​​ 的信息
猜你喜欢
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 2018-06-25
  • 2017-06-23
  • 2010-09-06
  • 1970-01-01
  • 2013-01-31
  • 2014-01-07
相关资源
最近更新 更多