当Django应用程序被淹没时,多余的请求会发生什么?

2024-10-01 02:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个使用Django的web应用程序。应用程序的最大容量为NRPS,而客户端发送MRPS,其中M>N。换言之,应用程序接收的请求数超出了它的处理能力,未处理的请求数将随时间线性增长(在t秒之后,等待处理的请求数为(M-N) * t

我想知道这些请求会发生什么变化。它们会在记忆中积累直到记忆完全吗?在满足某些条件后,他们会被“取消”吗


Tags: django记忆web应用程序客户端时间线性能力
1条回答
网友
1楼 · 发布于 2024-10-01 02:29:51

如果没有关于配置的详细信息,很难直接回答您的问题。此外,你的应用程序使用率极高,很难确定会发生什么。但是,您肯定不能确定所有这些请求都会得到正确处理

如果您能够计算应用程序每秒可以处理多少个请求,并且希望使其对超过N个请求可靠,那么考虑使用某种负载平衡器是一个好的开始,它可以将您的请求分布在多台服务器机器上

为了回答你的问题,我能想到一些当请求无法正确处理时的可能性:

  1. 客户端取消了他的请求(可能是一个浏览器,它可以有最大的执行时间限制)
  2. 请求的执行时间超过了web服务器配置中设置的timeout限制(因为缺少资源,I/O操作太多,…)
  3. 可能其他服务(如某些被阻止的PostgreSQL查询或Memcache服务器无法工作)超时
  4. 您的服务器已过载,无法建立TCP连接
  5. 您选择的Web服务器只能处理配置中指定的请求量/队列长度,并拒绝那些超出限制的请求(在Apache中,例如此配置:http://httpd.apache.org/docs/2.2/mod/mpm_common.html#listenbacklog

试着读一些关于C10K问题的东西,可能有助于更深入地思考它

相关问题 更多 >