2016-04-17 23 views
0

我一直在運行一些基準測試,找出爲什麼我的應用程序正在運行極大慢。我們的應用程序使用RDS上的mysql數據庫在ec2 m3實例上運行。起初,我認爲它與RDS或一個不好的配置有關。但是當我開始在代碼中進行時間檢查時,我得出結論,就像我的代碼一樣優化 - 顯然laravel kernal本身需要很長時間才能執行。Laravel照亮合同 HTTP 中的index.php內核響應接管第二執行

以我主控制器中的一個的平均執行時間爲控制器之內的所有的代碼爲大約200 - 175ms之間。

但是該網頁將加載採取了折磨人的1.3秒!在控制器的代碼中肯定沒有錯,所以我認爲其他東西一定是導致問題的原因,所以我在Laravel應用程序的公共目錄的index.php文件中對基本代碼進行了基準測試,並發現創建一個Illuminate \ Contracts \ Http \核心對象和獲取/發送響應獨自花了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); 

我假設這是一個框架的問題,但我怎樣才能克服這一點 - 一秒鐘的平均響應時間是不可接受的在這裏。

回答

0

大概可能有成千上萬的原因。你應該做的是分析你的代碼來驗證需要這麼長時間。

不過,我會考慮的第一件事是數據庫連接,並且正在執行的查詢。如果你執行例如10個查詢,每個查詢需要100ms,查詢執行將花費1s,所以你可能總共得到1.3秒,這並不奇怪。

所以,你應該檢查你的代碼究竟是什麼發生,驗證執行時間簡單的控制器操作(只有返回一些字符串爲例),驗證哪些供應商被加載等等,因爲每個這樣的事情會影響整體性能。

相關問題