我正在寻找行业中常用/最佳做法。
假设以下假设情景: 如果我的app服务器接受200个用户请求,并且每个请求都需要数据库访问权限。 但是我的DB max_connections是100。
如果所有200个用户同时请求,但我们只有100个max_connections,那么其他请求会发生什么情况,这些请求没有为最大连接提供服务?
在现实世界中:
将剩余的100个请求存储在应用服务器上的某种队列中,并等待数据库连接吗?
我们错了吗?
答案 0 :(得分:0)
基本上,如果您的数据库服务器只能处理100个连接,并且您的所有Web连接“都需要数据库访问”,则必须确保允许不超过100个请求 活动 在任何一个瞬间。这是这种情况的“执政约束”。 (它可能是其中之一。)
您可以在服务器上接受“最多200个并发连接”,但您必须将这些请求排入队列,以便限制100 活动请求不会超过。
有许多方法可以做到这一点:负载均衡器,应用服务器,甚至是Apache / nginix指令。有时,网页只是在并行工作的许多不同服务器之间分解的进程的前端。无论你如何做,都必须有一种方法来规范有多少请求处于活动状态,并对其余请求进行排队。
另请注意,即使您的Web服务器可能有“200个活动连接”,但所有200个客户端“同时 同时点击鼠标的可能性极小。”请求以随机的速率进入,因此可能永远不会遇到任何类型的延迟。但是,您的系统必须经过精心设计,以应对最糟糕的情况。