【问题标题】:PHP max DB connections reached - using Kohana/ORM to initiate connections已达到 PHP 最大数据库连接数 - 使用 Kohana/ORM 启动连接
【发布时间】:2012-04-06 03:56:29
【问题描述】:

在我们基于 PHP 的 Web 应用程序的负载测试中,我们可以轻松达到最大连接数 150 的 DB 硬限制。我们使用 ORM 运行 Kohana 来管理数据库连接。

这会导致连接异常(从而导致事务失败),mysql_pconnect 的性能似乎更差。

我们正在寻找一种能够在负载下优雅降级的解决方案。考虑的选项:

  1. 一个数据库连接池(呃,这在 PHP 中是不可能的吧?)
  2. 当失败是由于最大连接时重试失败的连接 达到的连接数

2 似乎合乎逻辑,但 Kohana/ORM 管理 DB 连接过程。我们可以以某种方式配置它吗?

有什么我没有想的吗?


编辑

这是一个 Amazon AWS RDS 数据库实例,Amazon 为我设置了 150 个限制,而且服务器肯定配置正确。我只想确保在使用我使用的任何数据库的负载下优雅降级。显然,我总是可以升级数据库并拥有更高的连接限制,但我想防止出现故障,以防我们意外达到限制。负载下的优雅降级。

【问题讨论】:

    标签: php mysql database orm kohana


    【解决方案1】:

    当您说负载测试时,我假设您正在推送大约 150 个并发请求,而不是因为您在同一个请求中建立了多个连接而达到了连接限制。如果是这样,请查看mysql_pconnect。要在 Kohana 中启用它,只需在连接的配置/数据库文件中启用 persistent = true。

    如果这不起作用,那么您将不得不找到允许更多连接的亚马逊产品,因为 PHP 不会在线程之间共享资源。

    This 回答您关于 PHP 数据库连接池的问题。

    【讨论】:

      【解决方案2】:

      如果连接限制为 150(max_connections 的默认值为 151),您很可能在没有配置文件的情况下运行 mysql

      您需要创建一个配置文件来提高该数字

      创建/etc/my.cnf并放入这两行

      [mysqld]
      max_connections=300
      

      你不必重新启动 mysql(如果你愿意,你可以)

      你可以运行这个 MySQL 命令来动态提升它

      SET GLOBAL max_connections = 300;
      

      更新 2012-04-06 12:39 EDT

      尝试使用mysql_pconnect 代替mysql_connect。如果 Kohana 可以配置为使用 mysql_pconnect,那么您就可以开始了。

      【讨论】:

      • MySQL 作为 AWS RDS 实例运行,我不相信我什至可以选择配置它,这是他们设置的限制。我只能升级到更大的服务器。
      猜你喜欢
      • 1970-01-01
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多