【问题标题】:Symfony2 unit testing: PDOException: SQLSTATE[00000] [1040] Too many connectionsSymfony2 单元测试:PDOException: SQLSTATE[00000] [1040] 连接太多
【发布时间】:2014-09-08 08:33:58
【问题描述】:

当我为我的应用程序运行单元测试时,第一次测试成功,然后大约 100 次,由于 PDOException(连接太多),测试开始失败。我已经搜索过这个问题,但无法解决。

我的配置如下:

<phpunit
        backupGlobals               = "false"
        backupStaticAttributes      = "false"
        colors                      = "true"
        convertErrorsToExceptions   = "true"
        convertNoticesToExceptions  = "true"
        convertWarningsToExceptions = "true"
        processIsolation            = "false"
        stopOnFailure               = "false"
        syntaxCheck                 = "false"
        bootstrap                   = "bootstrap.php.cache" >

如果我将 processIsolation 更改为“true”,所有测试都会生成错误 (E):

Caused by ErrorException: unserialize(): Error at offset 0 of 79 bytes

为此,我尝试在 php.ini 文件中设置“detect_unicode = Off”。

如果我以小批量运行测试,例如使用“--group something”,所有测试都会成功。

在一次运行所有测试时,有人可以帮我解决这个问题吗?我真的很想摆脱 PDOException。

提前致谢!

【问题讨论】:

    标签: unit-testing symfony pdo


    【解决方案1】:

    您应该增加数据库服务器中的最大并发连接数。

    如果您使用的是 MySQL,请编辑 /etc/mysql/my.cnf 并将 max_connections 参数设置为您需要的并发连接数。然后重启 MySQL 服务器。

    请记住:理论上,物理极限非常高。但是,如果您的查询导致高 CPU 负载或内存消耗,您的数据库服务器可能会占用其他进程所需的资源。这意味着,您可能会耗尽内存,或者您的系统可能会过载。

    【讨论】:

    • 似乎有效!谢谢!现在也许这是一个临时解决方案,我希望我在添加更多测试时不会收到错误。
    • 别担心。 ;) 如果您没有为每个查询加载 MB 的数据,或者有一些非常奇怪的连接,那么您的 MySQL 服务器可以在现代机器上处理数千个并发请求。
    【解决方案2】:

    对于遇到同样问题的人,这里是配置my.cnf 文件的更具体步骤。 如果您确定您在正确的my.cnf 文件中,请将max_connections = 500(默认为151)放入my.cnf 中的[mysqld] 部分。不要放在[client] 部分。

    为了确保您在正确的my.cnf 上,如果您从 Homebrew 或 XAMPPP 安装了多个 mysqld,请找到正确的 mysqld,使用 /Applications/XAMPP/xamppfiles/sbin/mysqld --verbose --help | grep -A 1 "Default options" 为 XAMPPP,您将得到如下信息:

    Default options are read from the following files in the given order: /Applications/XAMPP/xamppfiles/etc/xampp/my.cnf /Applications/XAMPP/xamppfiles/etc/my.cnf ~/.my.cnf

    通常位于/Applications/XAMPP/xamppfiles/etc/my.cnf

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2014-06-27
      • 1970-01-01
      • 2020-04-27
      • 2019-04-29
      相关资源
      最近更新 更多