2016-04-17 15 views
0

ベンチマークテストを実行して、私のアプリケーションが非常に遅く動作している理由を調べました。私たちのアプリケーションは、RDS上のmysqlデータベースを持つec2 m3インスタンス上で動作します。最初は、RDSや悪い設定と関係があると思っていました。しかし、私がコードにタイムチェックを入れ始めたとき、自分のコードと同じくらい最適化されていることが判明しました。明らかに、ラーベルカーネル自体は実行に長時間を要していました。Laravel Illuminate Contracts Http index.phpのカーネルレスポンスが1秒以上実行する

私の主なコントローラの1つで、コントローラ内のすべてのコードの平均実行時間は約200〜175msでした。

しかし、このページは非常に重くて1.3秒かかるでしょう!コントローラーのコードに間違いがないことは間違いありませんでした。問題を引き起こしているはずなことがわかったので、Laravelアプリケーションの公開ディレクトリのindex.phpファイルのベースコードをベンチマークし、Illuminate \ Contracts \ Http \ Kernelオブジェクトと応答を取得/送信するだけで1120msかかりました!

<?php 
require __DIR__.'/../bootstrap/autoload.php'; 

$app = require_once __DIR__.'/../bootstrap/app.php'; 
// FROM HERE -> 
$kernel = $app->make('Illuminate\Contracts\Http\Kernel'); 


$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture() 
); 

$response->send(); 
//<--to here takes 1120 ms of which 200 ms is my code in the controller 

$kernel->terminate($request, $response); 

私は、これは、フレームワークの問題であると仮定していますが、どのように私はこれを克服することができます - 1秒の平均応答時間は、ここでは受け入れられません。

答えて

0

これは数千の理由が考えられます。何がすべきかは、コードをプロファイリングして、何がそんなに長くかかるかを検証することです。

しかし、私が検討する最初のことは、データベース接続と実行されるクエリです。たとえば10個のクエリを実行し、それぞれ100msかかる場合、クエリの実行には1秒かかるため、合計1.3秒かかることがあります。

は、だからあなたは、正確に何が起こっているか、あなたのコードを確認する(例のみのためのいくつかの文字列を返すこと)シンプルなコントローラのアクションの実行時間を確認し、各そのようなことは、一般的なパフォーマンスに影響を与えることができるので、プロバイダがなどをロードしているかを確認する必要があります。

関連する問題