测试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的中文文档
Octane(加速引擎)