4

My Symfony2 application has some performance problems, so I ran a webgrind on it in order to see what was happening. Turns out it was parsing huge amounts of YML files on every request and I can't figure out why. I already have APC caching enabled so I don't know what it could be. Any help with this issue would be much appreciated.

Edit: Here is a screenshot of the webgrind I ran. http://i.imgur.com/m7g6l.jpg

4

2 に答える 2

2

私の調査によると、APCClassLoader は Symfony2 に Doctrine で使用される YAML ファイルをキャッシュさせないようです。デフォルトで構成ファイル (config.yml、parameters.yml) をキャッシュしているように見えますが、Doctrine が使用する実際の ORM YAML ファイルは、以下にリンクされているドキュメントに示されているようにキャッシュ ドライバーを指定しない限りキャッシュされません。

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

したがって、投稿者が構成 YAML のみを持ち、教義 YAML を持たない場合、上記のソリューションで問題が解決した可能性があります。ただし、Doctrine YAML が関係している場合は、Doctrine キャッシュ ドライバーを指定する必要があります。

これは、キャッシュ ドライバーが指定されていない限り (Doctrine の既定の配列キャッシュ以外)、ページの読み込みごとに解析されるため、アノテーションを使用している人々にも影響します。

これは複雑な問題であり、Doctrine ORM YAML ファイルがキャッシュの問題の原因であった私の場合、上記の回答は誤解を招くものだったので、投稿する必要があると考えました。

この投稿には、私の特定の問題と解決策の詳細が記載されています。

Symfony2 アプリが YAML の解析に 70 ~ 90% の時間を費やしているのはなぜですか?

于 2014-08-01T17:25:12.720 に答える
1

何が起こっているのかを理解しました。APC を有効にして動作させましたが、autoload.php で ApcUniversalClassLoader を使用していませんでした。詳細はこちら。彼らがドキュメントでパフォーマンス向上のための「提案」と言うとき、それは本当に「あなたはこれをしなければならない、さもなければあなたのパフォーマンスはひどいものになるだろう」という意味です。

于 2012-06-03T22:27:23.227 に答える