2016-07-25 47 views
0

我在寻找什么是行业中常用/最佳实践。如何处理连接数据库时发生的问题?

假设以下假设的情景: 如果我的应用程序服务器接受200名用户的请求,他们每个人都需要数据库访问。 但我的数据库max_connections是100.

如果所有200个用户同时请求,但我们只有100个max_connections,其他请求会发生什么情况,哪些未被最大连接服务?

在现实世界中:

  1. 将剩余的100个请求被存储在某种队列上的应用程序服务器,并一直在等待DB连接?

  2. 我们出错了呢?

回答

0

基本上,如果你的数据库服务器只能处理100个连接,以及所有的Web连接“需要访问数据库,”你必须确保不超过100个请求被允许为活跃在任何一个瞬间。  这是此场景的“裁决约束”。  (这可能是很多的一个。)

您可以接受你的服务器上“多达200个并发连接”,但你必须排队这些请求,使100所活跃请求的限制是不超标。

有很多种,可以使用很多方法做到这一点: 负载均衡器,应用服务器,甚至阿帕奇/ nginix指令。有时候,网页只是许多不同服务器并行运行的流程的前端。无论你如何操作,都必须有一种方法来管理有多少请求处于活动状态,并对余数进行排队。

还要注意的是,即使你可能有“ 200活动连接”到Web服务器,这是极不可能的,这些客户“的所有200在精确同时点击自己的鼠标。 ”  请求以随机速率进入,因此可能永远不会遇到任何类型的延迟。但是你的系统必须被设计来处理最坏的情况。