測試 laravel9 加速引擎Octane的效能

sentangle發表於2022-07-22

測試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 協議》,轉載必須註明作者和本文連結

相關文章