首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我们没有连接到数据库时,如何处理问题?

当我们没有连接到数据库时,如何处理问题?
EN

Stack Overflow用户
提问于 2016-07-25 16:41:19
回答 1查看 68关注 0票数 0

我正在寻找工业中常用的最佳实践是什么。

假设以下假设场景:如果我的应用服务器接受200个用户请求,并且每个用户都需要DB访问。但是我的DB max_connections是100。

如果所有200个用户同时请求,但我们只有100个max_connections,那么其他的请求会发生什么,而这些请求没有为最大连接提供服务?

在现实世界中:

  1. 剩下的100个请求是否会存储在应用服务器上的某种队列中,并一直在等待DB连接?
  2. 我们出错了吗?
EN

回答 1

Stack Overflow用户

发布于 2016-07-25 16:50:22

基本上,如果数据库服务器只能处理100个连接,并且所有web连接都“需要数据库访问”,则必须确保在任何时刻都不允许超过100个请求成为active。这是这个场景的“裁决约束”。它可能是许多种中的一种。

您可以在服务器上接受“最多200个同时连接”,但必须对这些请求进行排队,这样才不会超过100个活动请求的限制。

有很多很多方法可以做到这一点:负载平衡器、应用服务器,甚至Apache/nginix指令。有时,网页只是一个进程的前端,这个进程在许多并行工作的不同服务器之间被打破。无论您如何做,都必须有一种方法来控制活动的请求数量,并对其余的请求进行排队。

还要注意的是,尽管您可能有到web服务器的“200个活动连接”,但这些客户端“同时单击鼠标”的可能性很小。请求以随机的速度出现,因此可能永远不会遇到任何延迟。但是你的系统必须被设计来处理最坏的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38573265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档