【发布时间】:2012-07-20 06:24:27
【问题描述】:
几周前,我发布了一个关于排队数据库访问请求的问题,以防止在发生大量并发数据库请求时出现“连接过多”错误。人们告诉我 ConnectionPool 是我当时同意的正确方法。但是,我终于意识到这不是解决方案,尤其是当有很多不同的客户端通过网络访问 mysql 服务器时,因为连接池在客户端,它不能防止所有客户端的连接总和超过最大连接数mysql服务器。
我认为mysql服务器上应该有一些中间件作为队列或池工作,有人熟悉吗?谢谢。
我知道这个问题被广泛询问,我也很惊讶,好像没有完整的解决方案。
【问题讨论】:
-
可能的解决方案是在服务器上编写一个代理来创建连接池并将其传递给客户端
-
我想知道这些巨头网络公司是如何使用mysql的。我知道 twitter 是基于 mysql 服务器的。我无法想象他们会正确设置客户端应用程序的连接数,以保证总数小于 mysql 服务器的最大连接数。这不是一种可扩展的方式,因为您无法立即启动更多客户端,因为客户端连接的总和可能会炸毁 mysql 服务器。
-
您通过 HTTP 而不是 SQL 与 twitter 交谈。这意味着应用服务器,它可以平衡许多 MySQL 实例之间的负载。在此之前,HTTP 本身在应用服务器之间是平衡的。
标签: mysql database connection