在我们基于PHP的Web应用程序的负载测试中,我们可以轻松达到我们的数据库硬限制,最大连接数为150。我们使用ORM运行Kohana来管理数据库连接。
这会导致连接异常(从而导致事务失败),mysql_pconnect似乎表现得更差。
我们正在寻找一种能够在负载下实现优雅降级的解决方案。考虑的选项:
2似乎合乎逻辑,但Kohana / ORM管理数据库连接过程。我们能以某种方式配置吗?
我有没有 想到的东西?
修改
这是一个亚马逊AWS RDS数据库实例,亚马逊为我设置了150限制,并且服务器肯定是正确配置的。我只想确保在负载下使用我正在使用的任何数据库进行优雅降级。很明显,我总是可以升级数据库并且具有更高的连接限制,但是我想防止出现故障,以防我们意外地达到我们的限制。负载下的优雅降级。
答案 0 :(得分:2)
当你说负载测试时,我假设你正在推送大约150个并发请求而不是因为你在同一个请求中建立多个连接而达到了连接限制。如果是,请查看mysql_pconnect。要在Kohana中启用它,只需在配置/数据库文件中为您的连接启用persistent = true。
如果这不起作用,那么你必须找到允许更多连接的Amazon产品,因为PHP不会在线程之间共享资源。
This回答了有关PHP数据库连接池的问题。
答案 1 :(得分:0)
如果连接的限制为150(max_connections的默认值为151),则很可能在没有配置文件的情况下运行mysql
您需要创建一个配置文件来提高该数字
创建/etc/my.cnf并输入这两行
[mysqld]
max_connections=300
您不必重新启动mysql(如果您愿意,也可以)
你可以运行这个MySQL命令来动态提升它
SET GLOBAL max_connections = 300;
尝试使用mysql_pconnect而不是mysql_connect。如果Kohana可以配置为使用mysql_pconnect,那么你很高兴。