首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原理2内存占用

原理2内存占用
EN

Stack Overflow用户
提问于 2013-05-18 21:15:38
回答 1查看 167关注 0票数 0

我在我的ZF2项目中使用Doctrin2,但是我的服务器CPU和内存出现了一些奇怪的问题。我的服务器就会崩溃。

我收到了许多睡眠状态查询,但它们似乎没有得到清理。

代码语言:javascript
运行
复制
    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=的使用吗?

我的大多数查询都类似于:

代码语言:javascript
运行
复制
$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);

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-05-18 21:55:33

首先检查mysql的wait_timout变量。从文档中:

Wait_timeout :服务器在关闭非交互式连接之前等待活动的秒数。

在正常流程中(不使用持久连接),php会在脚本执行后自动关闭连接。为了确保没有休眠线程;在脚本的末尾,只需关闭连接:

代码语言:javascript
运行
复制
$entityManager->getConnection()->close();

如果这些查询在一个大的while/for循环中运行,您可能需要阅读doctrine 2 batch processing文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16624662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档