测试 laravel9 加速引擎Octane的性能

测试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. 测试

测试之前服务器状态

测试laravel加速引擎Octane的性能

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

测试中 服务器状态

测试laravel加速引擎Octane的性能

测试结果

测试laravel加速引擎Octane的性能

每秒处理的请求数(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

测试中 服务器状态

测试laravel加速引擎Octane的性能

测试结果

测试laravel加速引擎Octane的性能

每秒处理的请求数(Requests per second)为 244.30

4.结尾

有Laravel Octane的管理 swoole , 更好的控制swoole

虚拟机环境下和正式环境有所区别, 但仍有绝对说服力让你去使用Octane

Octane处理支持swoole, 你也可以选择 Open SwooleRoadRunner

其他相关详细的介绍请参考laravel9的中文文档

Octane(加速引擎)

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

出问题你就傻眼了,之前有个项目有性能要求,测压fpm不理想,换成octane,测压还行,结果部署的时候swoole一直异常,table设置失败,没办法又切回fpm

1年前 评论
九霄道长 1年前
测试不严谨,提高并发,取决于机器配置、开发语言计算机工作模型以及测试场景。
  1. 机器配置及带宽
    并发与核数正相关,而内存与实际开发语言工作模型相关。
  2. 开发语言工作模型
    php-fpm是多进程的工作模型,进程创建或销毁开销成本相对较高,因此在fpm配置中,仅对于并发测试而言,可配置固定进程模式管理进程,设置较大work进程数,fpm开启就直接启动固定work进程数,由于fpm为防止内存泄露,一般设置500次请求后,自动销毁进程,可以提高此值。
  3. 测试场景
    文中的测试场景是简单的cpu密集运算场景,php8.0版本支持jit,可以开启jit,大幅提高运算性能。
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!