我正在寻找工业中常用的最佳实践是什么。
假设以下假设场景:如果我的应用服务器接受200个用户请求,并且每个用户都需要DB访问。但是我的DB max_connections是100。
如果所有200个用户同时请求,但我们只有100个max_connections,那么其他的请求会发生什么,而这些请求没有为最大连接提供服务?
在现实世界中:
发布于 2016-07-25 16:50:22
基本上,如果数据库服务器只能处理100个连接,并且所有web连接都“需要数据库访问”,则必须确保在任何时刻都不允许超过100个请求成为active。这是这个场景的“裁决约束”。它可能是许多种中的一种。
您可以在服务器上接受“最多200个同时连接”,但必须对这些请求进行排队,这样才不会超过100个活动请求的限制。
有很多很多方法可以做到这一点:负载平衡器、应用服务器,甚至Apache/nginix指令。有时,网页只是一个进程的前端,这个进程在许多并行工作的不同服务器之间被打破。无论您如何做,都必须有一种方法来控制活动的请求数量,并对其余的请求进行排队。
还要注意的是,尽管您可能有到web服务器的“200个活动连接”,但这些客户端“同时单击鼠标”的可能性很小。请求以随机的速度出现,因此可能永远不会遇到任何延迟。但是你的系统必须被设计来处理最坏的情况。
https://stackoverflow.com/questions/38573265
复制相似问题