【发布时间】:2014-09-15 21:31:12
【问题描述】:
我在一家公司工作,该公司最近将网站的 PHP 代码从 vanilla MySQL 更新为 MySQLi,以领先于弃用更改。
在网络级别使用 64k 源 TCP 端口时,MySQL 出现了一些问题,并且出现故障。我们通过启用持久连接来解决这个问题。 但是,我们现在遇到了一个新问题,即我们运行的查询并不总是重用现有连接,最终会填满所有连接槽 (200)。
我们运行的设置是这样的:
我们有多个数据库服务器(开发环境中为 4 个),每个客户端站点的复制表和单个数据库分布在服务器上(每个站点都有自己的架构)以提高性能。
我们有一个自定义查询解析功能,可以确定要连接到哪个主机、选择正确的架构并针对其运行查询。这不是问题,一切正常。
主数据库服务器受到连接的影响,填满然后拒绝任何新连接。
对于每个页面加载,每个主机只需要 1 次 mysqli_connect 调用。但由于某种原因,这些连接似乎从未被重用。甚至多次刷新同一页面都会为每次加载创建新的连接。
这正常吗?我本来希望重新加载相同的页面并获取相同的数据会重用在刷新之前创建的睡眠连接..
【问题讨论】: