2016-11-17 5 views
0

symfony 2.8.12を使用し、同じ問題を抱えている2つの異なるプロジェクトで作業しています。symfonyのパフォーマンスに関する問題

読み込みに時間がかかりすぎるのではなく、ほとんどの場合、プロファイラを見ると常に「有罪なコンポーネント」が1つあります。 ファイアウォール、コントローラ、プロファイルリスナー、カーネルの応答....数秒(時には10を超える)の実行時間です。

example case example case 2

私は固定IPとしてデシベルを設定しようとした別のスレッドで読書(場合には、それはDNSルックアップの問題である)、 は、php.iniのいくつかのパラメータを変更したが、何も変わっていません。これは、PHPアクセラレーションとOPCacheが有効になっている私のローカルとリモート環境の両方で邪魔になります。

私は「Hello World」のページに長い時間を取得しても、私のコードに特別な何もしないわけではない、それは少しイライラ:)

+0

Windowsで実行していますか(悪いほど遅いですか?)http://stackoverflow.com/questions/25405360/symfony-2-performance-optimisations?rq=1を読んだことがありますか? – Veve

+1

あなたが実行しているOSはどれですか、どのPHPバージョンで、symfonyをdevまたはprodとして実行していますか、組み込みのcli phpサーバまたは実際のWebサーバ(apache、nginx)でsymfonyを実行していますか?リクエストごとにキャッシュがウォームアップする必要がありますか?あなたのログはどのように設定されていますか追加のデバッグが有効になっていますか? – LBA

+0

Thxすべてのはい私はそれがWindowsで実行されていることを言い忘れていた:(、realpath_cache_sizeは問題を引き起こしていた! – yauros

答えて

1

あなたがphp.iniで有効になってxdebug拡張子を持っていますか?

このような場合は、特に本番環境で無効にしてみてください。

+0

こんにちは、答えのためのthxはローカルとリモートの両方で無効にされています – yauros

+0

この投稿をチェックすると、あなたに役立つかもしれません://stackoverflow.com/questions/13459157/symfony2-firewall-takes-ages/40618145#40618145 – progg

+0

Thx to everyone最後は設定realpath_cache_size値でした。今は大丈夫です! – yauros

6

これは、symfonyが "Hello world"の印刷を開始する前に何千ものファイルを読み込むために起こります。実際、あなたのハードディスクはsymfonyの効率に最も大きな影響を与えます。幸いにも、満足のいくレベルを達成するための簡単な手順はほとんどありません。

  1. のphp.ini:
    がデフォルトよりもはるかに高い値でこれらの2つのパラメータを設定し、すなわち
    realpath_cache_size = 4096k
    realpath_cache_ttl = 7200
  2. ダンプ作曲の自動ロード:
    composer dump-autoload --optimize - これは、ロードされたクラス
  3. でダンプファイルを作成します
  4. どのようにopcacheを使うのか分かりませんが、apcuモジュールをインストールすることをお勧めします。 symfonyのconfig_prod.ymlにおけるその使用のメタデータ・キャッシュの後:その他にも非常に重要な

    use Symfony\Component\HttpFoundation\Request; 
    use Symfony\Component\ClassLoader\ApcClassLoader; 
    
    $loader = require __DIR__.'/../app/autoload.php'; 
    include_once __DIR__.'/../app/bootstrap.php.cache'; 
    
    $apcLoader = new ApcClassLoader(md5($_SERVER['HTTP_HOST']), $loader); 
    $loader->unregister(); 
    $apcLoader->register(true); 
    
    require_once __DIR__.'/../app/AppCache.php'; 
    $kernel = new AppKernel('prod', false); 
    $kernel->loadClassCache(); 
    $kernel = new AppCache($kernel); 
    Request::enableHttpMethodParameterOverride(); 
    $request = Request::createFromGlobals(); 
    $response = $kernel->handle($request); 
    $response->send(); 
    $kernel->terminate($request, $response); 
    

 
doctrine: 
orm: 
    metadata_cache_driver: apc 
    result_cache_driver: apc 
  • あなたのウェブ/ app.phpは、通常のものに比べ、いくつかの追加のラインを持っているはずです

    1. PHP 7を使用すると、効率が大幅に向上します。
    2. PHPをFPM(FastCGI Proces Manager)で使用する
    3. クエリをキャッシュするためのSQLソリューションはありません。つまり、Redis、Elasticsearch
    4. xdebugを無効にします。プロファイラーでは使用しないようにしてください。

    リストは実際には長いですが、最初の4ポイントプラス8番目のものが最も一般的なケースでトリックを行います。 私はそれが助けてくれることを願っています。

  • +0

    'metadata_cache_driver:apc'または標準の' php app/console cache:clear --env = prod --no-debug'を使うとAPCキャッシュをクリアする必要はありますか? – StockBreak

    +0

    APCuにphp.iniが付属している場合は、PHPファイル(またはPHPでも解析されるTWIG)を変更するたびにそのファイルをクリアする必要があります。このツールを使用してAPCキャッシュをクリアします:https://gordalina.github.io/cachetool/ –

    関連する問題