Swoole 实现高性能 HTTP 服务器

本文介绍了如何使用 Swoole 构建高性能的 HTTP 服务器,通过在 Laravel 项目中配置 Swoole 和 Supervisor 进行管理,并结合 Nginx 配置实现负载优化。通过性能对比测试,展示了 Swoole 带来的处理能力显著提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装插件

composer require hhxsv5/laravel-s

发布 脚本配置
php artisan laravels publish

启动

php bin/laravels start

在这里插入图片描述

这样,Swoole 服务就被启动起来,监听本地的 5200 端口,如果有请求发送到这个端口,它就可以进行处理

通过 Supervisor 管理 LaravelS

[program:laravel-s-test]
command=/user/local/bin/php /var/www/swoole-test/bin/laravels start -i
numprocs=1
autostart=true
autorestart=true
startretries=3
user=www-data
redirect_stderr=true
stdout_logfile=/path/to/project/storage/logs/supervisord-stdout.log

nginx


upstream laravels {
    # Connect IP:Port
    server workspace:5200 weight=5 max_fails=3 fail_timeout=30s;
    keepalive 16;
}
     server {

         listen 80;

         server_name swoole-demo-s.com;
		 root /var/www/swoole-demo.com/public;
		 
         index index.php index.html index.htm;
         error_log /var/www/swoole_error.log;

        # Nginx 处理静态资源,LaravelS 处理动态资源
		location / {
			try_files $uri @laravels;
		}

    location @laravels {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Real-PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header Scheme $scheme;
        proxy_set_header Server-Protocol $server_protocol;
        proxy_set_header Server-Name $server_name;
        proxy_set_header Server-Addr $server_addr;
        proxy_set_header Server-Port $server_port;
        proxy_pass http://laravels;
    }

    location ~ /\.ht {
        deny all;
    }
     }

配置 Laravel 应用
接下来,在 blog 项目根目录下打开 .env,新增下面两条配置:

LARAVELS_LISTEN_IP=workspace
LARAVELS_DAEMONIZE=true
docker-compose build workspace nginx
docker-compose down
docker-compose up -d nginx 

请添加图片描述

请添加图片描述

性能对比测试
没有swoole 的 ab 测试
在这里插入图片描述

swoole 代理的http请求在这里插入图片描述

从 pqs 可以看出本地环境 每秒处理请求的能力提升了接近十倍
知识点

laradock 使用 php-worker 配置 supervisor

https://blog.csdn.net/u014273681/article/details/108233151

/laradocke/php-worker
supervisord.d 

在 laradock 目录下 docker-compose build --no-cache php-worker
启动 docker-compose up -d php-worker
ps -ef|grep laravels

ab-压力测试-laradock

ab-压力测试-laradock
docker-compose build apache2
docker run -it --name apache2 --net=host laradock_apache2 bash
ab -n 100 -c 10 http://test.com/
其中-n表示请求数,-c表示并发数
Requests per second: 19.66 [#/sec] (mean) 吞吐率 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
Time per request: 5087.180 [ms] (mean) 用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 50.872 [ms] (mean, across all concurrent requests) 服务器平均请求处理时间,大家最关心的指标之三
POST请求
编辑文件post.txt写入
cid=4&status=1
相当于post传递cid,status参数
ab -n 100 -c 10 -p 'post.txt' -T 'application/x-www-form-urlencoded' 'http://test.api.com/ttk/auth/info/'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值