在基于 PHP 的 Web 应用程序的负载测试中,我们可以轻松达到数据库最大连接数 150 个的硬限制。我们使用 ORM 运行 Kohana 来管理数据库连接。
这会导致连接异常(从而导致事务失败),mysql_pconnect 的性能似乎更差。
我们正在寻找一种在负载下实现优雅降级的解决方案。考虑的选项:
- 数据库连接池(呃,这对于 PHP 来说是不可能的,对吧?)
- 当失败原因是最大连接数时,重试失败的连接 已达到连接
2 看起来合乎逻辑,但 Kohana/ORM 管理数据库连接过程。我们可以以某种方式配置它吗?
有什么是我没有想到的吗?
编辑
这是一个 Amazon AWS RDS 数据库实例,Amazon 为我设置了 150 个限制,并且服务器肯定配置正确。我只是想确保无论我使用哪个数据库,在负载下都能正常降级。显然,我始终可以升级数据库并拥有更高的连接限制,但我想防止出现故障情况,以防我们意外达到限制。负载下的优雅降级。
最佳答案
当您说负载测试时,我假设您正在推送大约 150 个并发请求,而不是达到连接限制,因为您在同一请求中建立了多个连接。如果是这样,请查看mysql_pconnect 。要在 Kohana 中启用它,只需在连接的配置/数据库文件中启用 permanent = true 即可。
如果这不起作用,那么您必须找到允许更多连接的 Amazon 产品,因为 PHP 不会在线程之间共享资源。
This回答您有关 PHP 数据库连接池的问题。
关于PHP 达到最大数据库连接数 - 使用 Kohana/ORM 发起连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10038955/