測試laravel加速引擎Octane的效能
1.測試環境
win10本地虛擬機器centos7(4核4G)
laravel/framework 9.19
laravel/octane 1.2
PHP 8.0.20
nginx 1.22.0
2.建立站點
修改web.php 新增測試路由
Route::get('/test', function () {
$i = 0;
$sum = 0;
while ( $i<100000)
{
$i++;
$sum += mt_rand(1,999);
}
return "站點測試,計數:$i 隨機總數: $sum";
});
3. 測試
測試之前伺服器狀態
3.1 使用php-fpm管理php
ab -c 10 -n 100 url , -c 10表示併發使用者數為10 , -n 100表示請求總數為100
n為1000時 測試跑不起來, 太多的php-fpm 高負荷導致響應失敗
測試
#n為500
ab -n 500 -c 100 http://192.168.213.149/test
測試中 伺服器狀態
測試結果
每秒處理的請求數(Requests per second)為 14.76
3.2 使用加速引擎(Laravel Octane+ swoole)
安裝swoole
安裝加速引擎
composer require laravel/octane
php artisan octane:install
#選擇swoole服務
配置nginx, 讓octane來處理php
#處理nginx報錯 Unknown "connection_upgrade" Variable
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name domain.com;
root /home/forge/domain.com/public;\
index index.php;
########### 區別與fast-cgi的主要配置 ###########################
location /index.php {
try_files /not_exists @octane;
}
location / {
try_files $uri $uri/ @octane;
}
location @octane {
set $suffix "";
if ($uri = /index.php) {
set $suffix ?$query_string;
}
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header Scheme $scheme;
proxy_set_header SERVER_PORT $server_port;
proxy_set_header REMOTE_ADDR $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://127.0.0.1:8000$suffix;
}
#####################################################
}
開啟octane服務
php artisan octane:start --workers=8 --task-workers=10
測試
ab -n 100000 -c 100 http://192.168.213.149/test
測試中 伺服器狀態
測試結果
每秒處理的請求數(Requests per second)為 244.30
4.結尾
有Laravel Octane的管理 swoole , 更好的控制swoole
虛擬機器環境下和正式環境有所區別, 但仍有絕對說服力讓你去使用Octane
Octane處理支援swoole, 你也可以選擇 Open Swoole 和 RoadRunner。
其他相關詳細的介紹請參考laravel9的中文文件
本作品採用《CC 協議》,轉載必須註明作者和本文連結