1

そこにsymfony2アプリがあります。しかし、RAM メモリに問題があります... アクティブなユーザーが 50 人いるときは魅力的に機能します (Google アナリティクス)。

通常、次のように DB からデータを選択します。

        $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 人がいる場合.. (Google アナリティクス) 約 7GB のメモリが必要です... その後、ピーク後に 5GB まで低下します。しかし、なぜそんなに?私のスクリプトは、app_dev で 10 ~ 17 MB のメモリを使用しています。

私もAPCを使っています。どうすればこの状況を解決できますか? なぜそんなに多くのメモリが消費されるのですか? アドバイスありがとうございます!!

あなたの平均記憶力は?

ところで:私がこれを解決しないとき、私は大きな問題になるでしょう。

4

5 に答える 5

1

メモリ消費量を正しく理解していることを確認してください。http://blog.scoutapp.com/articles/2010/10/06/determining-free-memory-on-linux

Apc を高速化するには、変更したチェックを削除できますがapc.stat = 0、既存のファイルを変更するたびに apc-cache をクリアする必要があります: http://www.php.net/manual/en/apc.configuration.php#ini.apc.統計

メモリ消費を減らすために、ハイドレーションを減らして->select('x')、必要なものだけを追加およびフェッチします。

メモリ消費を最適化するには、/etc/mysql/my.cnf などの mysql-cache を有効にします。

query_cache_size=128M
query_cache_limit=1M

ボトルネックを回避するために、スロークエリログを有効にして確認することを忘れないでください。

于 2013-05-09T16:05:22.627 に答える
1

オブジェクトのコレクションではなく、スカラー結果を取得しようとしたことがありますか?

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

http://docs.doctrine-project.org/en/latest/reference/query-builder.html#executing-a-query http://doctrine-orm.readthedocs.org/en/2.0.x/reference/dql -doctrine-query-language.html#query-result-formats

symfony の設定レベルで、キャッシュが適切に有効化されていることを確認するために設定を再確認しましたか?

http://symfony.com/doc/current/reference/configuration/doctrine.html#caching-drivers

全体的なプロセスによっては、エンティティ マネージャーからエンティティを切り離すことが役立つ場合があります。

http://docs.doctrine-project.org/en/2.0.x/reference/working-with-objects.html#detaching-entities

于 2013-05-13T21:45:55.720 に答える
1

あなたのページには複数のクエリがあると思われます。ページで発生しているクエリの数は? ドクトリンの最悪の点は、getter (例: getComments()) を介してクエリを実行できることです。多対多の関係を使用している場合、これは大きな問題につながります。開発環境でプロファイラーを介してすべてのクエリを表示できます。

また、apache や php の設定に問題がある可能性もあります。php-fpm の不適切な設定も問題を引き起こします。最善の解決策は、siegeなどのツールを使用してサーバーのストレス テストを行い、htop または top で何が起こっているかを確認することです。300人は「裸の」アパッチにとって大きな負荷になる可能性があります

于 2013-05-10T08:55:01.817 に答える