2016-07-21 103 views
3

我已經安裝了一個Ubuntu的14.04與PHP 5.5和Apache 2.4。Laravel 5.2高CPU與長路由

我安裝了一個新鮮的laravel 5.2。項目中沒有數據庫連接。

我然後當到APP/HTTP/routes.php文件和編輯,以:

Route::get('/', function() { 
    return view('welcome'); 
}); 


Route::get('/test/direct', function() { 
    return view('welcome'); 
}); 

所以基本上我有2個路由只是表示歡迎視圖。

我然後運行:

ab -n 9999999 -t 300 -c 30 http://xxxxx/laravel52/public 

CPU的永遠不會超過6%,我得到下面的結果:立即

ab -n 9999999 -t 300 -c 30 http://xxxxx/laravel52/public/test/direct 

的CPU:

Server Software:  Apache/2.4.7 
Server Hostname:  xxxxx 
Server Port:   80 

Document Path:   /laravel52/public 
Document Length:  328 bytes 

Concurrency Level:  30 
Time taken for tests: 146.271 seconds 
Complete requests:  50000 
Failed requests:  0 
Non-2xx responses:  50000 
Total transferred:  28550000 bytes 
HTML transferred:  16400000 bytes 
Requests per second: 341.83 [#/sec] (mean) 
Time per request:  87.763 [ms] (mean) 
Time per request:  2.925 [ms] (mean, across all concurrent requests) 
Transfer rate:   190.61 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  15 47 77.0  40 3157 
Processing: 17 41 28.1  37 2140 
Waiting:  17 40 26.9  37 2140 
Total:   40 87 84.3  78 3208 

Percentage of the requests served within a certain time (ms) 
    50%  78 
    66%  83 
    75%  86 
    80%  89 
    90% 100 
    95% 120 
    98% 162 
    99% 228 
100% 3208 (longest request) 

我然後運行上升到100%,最後我得到這些結果:

Server Software:  Apache/2.4.7 
Server Hostname:  xxxxx 
Server Port:   80 

Document Path:   /laravel52/public/test/direct 
Document Length:  1023 bytes 

Concurrency Level:  30 
Time taken for tests: 300.001 seconds 
Complete requests:  11888 
Failed requests:  0 
Total transferred:  24585740 bytes 
HTML transferred:  12161424 bytes 
Requests per second: 39.63 [#/sec] (mean) 
Time per request:  757.070 [ms] (mean) 
Time per request:  25.236 [ms] (mean, across all concurrent requests) 
Transfer rate:   80.03 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  4 12 29.4  8 1020 
Processing: 75 740 790.0 609 14045 
Waiting:  74 738 789.9 608 14043 
Total:   88 752 789.4 622 14050 

Percentage of the requests served within a certain time (ms) 
    50% 622 
    66% 835 
    75% 952 
    80% 1020 
    90% 1237 
    95% 1536 
    98% 2178 
    99% 2901 
100% 14050 (longest request) 

看來,如果不是根路徑laravel尖峯的CPU,如果有很多連接。這也發生在laravel 4.2中的全新安裝。

任何人都可以指出爲什麼會發生這種情況?我真的需要解決這個問題。

我的服務器有8核英特爾(R)酷睿TM i7-4771 CPU @ 3.50GHz與8GB內存。

謝謝。

回答

0

您可以緩存路由以加快路由解析速度,但route caching不適用於基於Closure的路由。要使用路由緩存,您必須將任何Closure路由轉換爲使用控制器類。

要緩存您的路線執行php artisan route:cache並清除緩存php artisan route:clear

您還應該考慮php artisan optimize在單個文件中編譯通用類,從而減少每個請求中包含的數量,並且將所有配置文件合併到單個文件中以加快加載速度。

+0

嗨@Malta,它沒有解決問題。它仍然存在。用1個返回歡迎視圖的方法創建一個控制器。映射了我必須'TestController @ showWelcome'的2條路線。 Ran'php artisan route :: cache'和'php artisan optimize'。得到或多或少相同的結果。 –

0

忘記這一個。這不是Laravel問題。這是該機器特有的問題。一段時間後,我將Ubuntu 12.04升級到14.04。在這樣做時,它將apache 2.2升級到2.4,但保留了部分配置。這個問題應該存在,因爲像Magento這樣的其他框架的行爲方式相同。