我在我的ZF2项目中使用Doctrin2,但是我的服务器CPU和内存出现了一些奇怪的问题。我的服务器就会崩溃。
我收到了许多睡眠状态查询,但它们似乎没有得到清理。
mysql> show processlist;
+---------+--------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+---------+--------------+-----------+------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| 2832346 | leechprotect | localhost | leechprotect | Sleep | 197 | | NULL |
| 2832629 | db_user | localhost | db_exemple | Sleep | 3 | | NULL |
| 2832643 | db_user | localhost | db_exemple | Sleep | 3 | | NULL |
| 2832646 | db_user | localhost | db_exemple | Sleep | 3 | | NULL |
| 2832664 | db_user | localhost | db_exemple | Sleep | 154 | | NULL |
| 2832666 | db_user | localhost | db_exemple | Sleep | 153 | | NULL |
| 2832669 | db_user | localhost | db_exemple | Sleep | 152 | | NULL |
| 2832674 | db_user | localhost | db_exemple | Sleep | 7 | | NULL |
| 2832681 | db_user | localhost | db_exemple | Sleep | 1 | | NULL |
| 2832683 | db_user | localhost | db_exemple | Sleep | 4 | | NULL |
| 2832690 | db_user | localhost | db_exemple | Sleep | 149 | | NULL |
(.......)
而且,php GC似乎没有清除内存中的所有对象,甚至没有杀死进程。有没有办法禁用缓存系统?它会改善我的resorces=的使用吗?
我的大多数查询都类似于:
$query = $this->createQueryBuilder('i');
$query->innerJoin('\Application\Relation', 'r', 'WITH', 'r.child = i.id');
$query->innerJoin('\Application\Taxonomy', 't', 'WITH', 't.id = r.taxonomy');
$query->where('t.type = :type')->setParameter('type', $relation);
$query->groupBy('i.id');
$items = $query->getQuery()->getResult(2);
提前谢谢。
发布于 2013-05-18 21:55:33
首先检查mysql的wait_timout变量。从文档中:
Wait_timeout :服务器在关闭非交互式连接之前等待活动的秒数。
在正常流程中(不使用持久连接),php会在脚本执行后自动关闭连接。为了确保没有休眠线程;在脚本的末尾,只需关闭连接:
$entityManager->getConnection()->close();
如果这些查询在一个大的while/for循环中运行,您可能需要阅读doctrine 2 batch processing文档。
https://stackoverflow.com/questions/16624662
复制相似问题