如果我的Django服务器收到的流量超出我的承受能力,该怎么办?

如果我的Django服务器收到的流量超出我的承受能力,该怎么办?,django,server,traffic,Django,Server,Traffic,请让我知道当有更多的用户时会发生什么 如果服务器崩溃,如果流量再次下降,它会自动恢复吗 环境:一个服务器,使用nginx-gunicorn。但是不要使用自动治疗服务。(beanstalk,k8s,) 交通:我不知道。但我假设服务器可以覆盖10个访问者,有100个访问者 我不想涵盖太多的用户。但我只想知道当可用的访问者超过服务器时会发生什么 这个问题有点抽象,你能添加更多细节吗 Django正在运行多个实例还是一个?如果有多个,是否有负载平衡器 (像ngnix) 有多少流量 你说撞车是什么意思?

请让我知道当有更多的用户时会发生什么

如果服务器崩溃,如果流量再次下降,它会自动恢复吗

环境:一个
服务器
,使用
nginx-gunicorn
。但是不要使用自动治疗服务。(
beanstalk,k8s,

交通:我不知道。但我假设服务器可以覆盖10个访问者,有100个访问者


我不想涵盖太多的用户。但我只想知道当可用的访问者超过服务器时会发生什么

这个问题有点抽象,你能添加更多细节吗

  • Django正在运行多个实例还是一个?如果有多个,是否有负载平衡器 (像ngnix)
  • 有多少流量
  • 你说撞车是什么意思?如果是 “追溯”则取决于在何处以及如何处理,如果你的意思是 后端处理要花很多时间,解决方案是在中运行它们 不同的过程
如果您的目的是限制到达API的请求,那么它被称为节流,您可以使用这里提到的各种方法来限制它们:

如果服务器在站点上,并且您拥有它,并且您不介意对其进行爬网,那么您可以自己测试它。您可以使用“apachebenchmark”(通常在linux命令行上仅使用“ab”)来实现这一点。使用ab,您可以通过大量并发请求访问服务器,并获得一份关于您如何操作的报告。您可以发送GET、POST等。尝试使用一个更为资源密集型的端点来使用一个更严重的测试场景。 您也可以同时在自己的浏览器中运行您的站点,并亲自查看服务器负载过重时的情况

另一方面,如果您的站点是在共享硬件上运行的,那么您应该更加小心。如果您对共享主机进行了严格的负载测试,在他们看来,您肯定是一名攻击者。他们可能不高兴。但是,如果您小心不要过火,ab仍然可以对您有用,它可以简化一次模拟10个、20个或200个用户,并获得关于所有用户的一般体验的良好报告(例如平均响应时间、失败请求数等)

TLDR:使用Apache基准(“ab”)模拟大量负载。如果使用共享主机,不要过度使用


最后,如果你关心并想在你的情况下增加一点硬件保护,那么考虑一下CyrdFLARE帐户并把你的网站放在后面。它将为您进行缓存,还可以提供节流和其他负载控制功能。某些功能是免费的,而其他功能是便宜的。

这完全取决于您的部署设置。您是否使用gunicorn或uWSGI之类的工具运行应用程序?您是否使用systemd这样的主管运行该流程?您是否通过NGINX或Apache之类的东西将流量代理到您的WSGI应用程序?有太多的变量在起作用,在没有很多澄清的情况下提供一个好的答案。@ChathanDriehuys我不想涵盖太多的用户。但我只想知道当可用的访问者多于服务器时会发生什么。如果您正在使用,如果您的所有工作人员都很忙,gunicorn将生成一个新的工作人员,如果没有足够的RAM来分配新的工作人员,nginx将响应503。如果有足够的数据,并且生成了worker,它将给nginx响应并死亡,以保留您的--workers选项号。另外,为了对生产更有信心,您可以通过ApacheJMetri测量负载,知道站点速度慢,并在大量流量时显示5xx错误。但我想知道服务器内部发生了什么。