Memory symfony2空闲-内存不足

Memory symfony2空闲-内存不足,memory,symfony,ram,Memory,Symfony,Ram,我有symfony2应用程序。但是我们有内存问题。。。当有50个活跃的人(谷歌分析)时,它就像一个魅力 我通常这样从数据库中选择数据: $qb=$this->createQueryBuilder('s') ->addSelect('u') ->where('s.user = :user') ->andWhere('s.admin_status = false') ->andWhe

我有symfony2应用程序。但是我们有内存问题。。。当有50个活跃的人(谷歌分析)时,它就像一个魅力

我通常这样从数据库中选择数据:

        $qb=$this->createQueryBuilder('s')
         ->addSelect('u')
         ->where('s.user = :user')
         ->andWhere('s.admin_status = false')
         ->andWhere('s.typ_statusu != :group')
         ->setParameter('user', $user)
         ->setParameter('group', 'group')
         ->innerJoin('s.user', 'u')               
         ->orderBy('s.time', 'DESC')
         ->setMaxResults(15);

 return $query=$qb->getQuery()->getResult();
查询速度很快,我没有问题

请让我确切地知道你需要什么,我会把它贴在这里。我太需要修理了

但现在问题来了:当同时有470人时。。(谷歌分析)大约有7GB的内存。。。然后在峰值后下降到5GB。但为什么这么多???我的脚本在app_dev中占用10-17MB的内存

我也使用APC。我怎样才能解决这个问题?为什么要消耗这么多内存?谢谢你的建议

你的平均记忆力是多少


顺便说一句:如果我不解决这个问题,我会遇到很大的麻烦。

一个问题可能是条令,如果你在每个请求中加入过多的obejcts。

一个问题可能是条令,如果你在每个请求中加入过多的obejcts。

将脚本的最大执行时间设置为30秒:

max_execution_time = 30
将APC shm_大小设置为与内存相比合理的大小:

apc.shm_size = 256M

然后优化您的查询。如果在cli中使用php/symfony,最好也限制cli中php的资源使用。

将脚本的最大执行时间设置为仅30秒:

max_execution_time = 30
将APC shm_大小设置为与内存相比合理的大小:

apc.shm_size = 256M

然后优化您的查询。如果在cli中使用php/symfony,最好也限制cli中php的资源使用。

确保正确理解内存消耗

要快速执行Apc,您可以使用
Apc.stat=0
删除已修改的检查,但每次修改现有文件时都需要清除Apc缓存:

要减少内存消耗,请添加
->选择('x')
,并仅获取必要的内存

要优化内存消耗,请启用mysql缓存,如/etc/mysql/my.cnf:

query_cache_size=128M
query_cache_limit=1M

不要忘记启用并检查慢速查询日志以避免瓶颈。

确保您正确理解内存消耗

要快速执行Apc,您可以使用
Apc.stat=0
删除已修改的检查,但每次修改现有文件时都需要清除Apc缓存:

要减少内存消耗,请添加
->选择('x')
,并仅获取必要的内存

要优化内存消耗,请启用mysql缓存,如/etc/mysql/my.cnf:

query_cache_size=128M
query_cache_limit=1M

不要忘记启用并检查慢速查询日志以避免瓶颈。

我怀疑您的页面有多个查询。页面上发生了多少查询?原则中最糟糕的事情是通过getter(例如getComments())进行查询的能力。如果您使用多对多关系,这将导致巨大的问题。您可以通过dev环境中的探查器查看所有查询


在apache或php的设置中也可能存在此问题。php fpm的不正确设置也会导致问题。最好的解决方案是使用诸如htop或top之类的工具对服务器进行压力测试。300人对于“裸体”apache来说可能是一个沉重的负担

我怀疑您的页面有不止一个查询。页面上发生了多少查询?原则中最糟糕的事情是通过getter(例如getComments())进行查询的能力。如果您使用多对多关系,这将导致巨大的问题。您可以通过dev环境中的探查器查看所有查询


在apache或php的设置中也可能存在此问题。php fpm的不正确设置也会导致问题。最好的解决方案是使用诸如htop或top之类的工具对服务器进行压力测试。300人对“裸”apache来说可能是一个沉重的负担

您是否尝试过检索标量结果而不是对象集合

// [...]
return $query=$qb->getQuery()->getScalarResult();

在symfony配置级别,您是否仔细检查了配置,以确保已正确启用缓存

根据您的整个流程,从实体管理器中分离实体可能会很有用:


您是否尝试过检索标量结果而不是对象集合

// [...]
return $query=$qb->getQuery()->getScalarResult();

在symfony配置级别,您是否仔细检查了配置,以确保已正确启用缓存

根据您的整个流程,从实体管理器中分离实体可能会很有用:


我在野外有一堆Symfony2应用程序,但没有一个需要的内存量接近这个数量。你在运行APC吗?是的,我在运行APC。你之前有类似的问题()。我想这仍然是一个问题:你补充了太多的数据。向我们展示一些如何从数据库中检索数据的代码。您能告诉我们有关堆栈的更多信息吗?php fpm?mod_php?还有一点关于它是如何配置的?在
ps axux
中,您可以看到哪些进程正在使用RAM,以及有多少个进程?等等,嗯。。。这是ps axux:关于php fpm和mod_php,我不知道该做什么,也不知道你需要什么,所以请说得更具体一些。我有很多Symfony2应用程序,但没有一个需要接近这个内存量的。你在运行APC吗?是的,我在运行APC。你之前有类似的问题()。我想这仍然是一个问题:你补充了太多的数据。向我们展示一些如何从数据库中检索数据的代码。您能告诉我们有关堆栈的更多信息吗?php fpm?mod_php?还有一点关于它是如何配置的?在
ps axux
中,您可以看到哪些进程正在使用RAM,以及有多少个进程?等等,嗯。。。这是ps axux:关于php fpm和mod_php,我不知道该做什么,也不知道你需要什么,所以请更具体一点。这是一种可能性。但我正在找回我真正需要的东西。但我可以在某些查询中指定要从DB中撤回的某些列,而不是整个表。。。这将减少物体和物体的数量