Doctrine 2关闭连接

时间:2011-08-20 20:24:09

标签: mysql doctrine-orm

我使用doctrine 2 PDO和mysql。

当对服务器进行压力测试时,mysql会报告大量中止连接(最多20%)。

我正试图找到问题。

Mysql手册建议确保正确关闭与数据库的连接。 http://dev.mysql.com/doc/refman/5.0/en/communication-errors.html

如果doctrine实际上关闭了连接,或者使用持久连接,我找不到任何信息。

此外,还有什么可以解释中止连接吗?我在这里不知所措。

PS。服务器是ubuntu 10.04,nginx 1.x,php 5.3.5(fpm)和mysql 5.1.41

3 个答案:

答案 0 :(得分:23)

根据我的观察,Doctrine使用持久连接。

我们偶然发现了一个问题,在symfony2中启动了单元测试,其中数据库被垃圾邮件连接处于“睡眠”状态。对我们有用的解决方案:

$entityManager->getConnection()->close();

答案 1 :(得分:1)

我有同样的问题和

$entityManager->getConnection()->close(); 

似乎有效,但效果更好'在某些php版本中,如果你添加

 gc_collect_cycles() 

关闭连接后。 我在旧的PHP版本中仍然存在这类问题,可能与我猜的垃圾收集器有关。 如果我找到所有php版本的最终解决方案,将会及时更新

答案 2 :(得分:0)

我发现了这个调整:

https://sroze.io/phpunit-mysql-too-many-connections-error-ab52cd5798c5

在PhpUnit XML选项文件中设置processIsolation="true"选项似乎可以解决问题。