安装插件
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/'