Swoole使用场景及代码实现
可用于对laravel项目速度优化
基于swoole的特性,有一些作者就开发组件试图将swoole的特性和laravel结合,以提升laravel项目的访问速度和承载能力。
首先看一下原生laravel的压力测试情况:
下载了一个5.8版本的laravel框架,在Test控制器的index方法输出字符串Hello World
jun@zhangjunshengdeMacBook-Pro ~ % wrk -t4 -c100 http://www.**.com/
Running 10s test @ http://www.**.com/
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.21s 212.04ms 1.85s 84.74%
Req/Sec 20.62 11.35 60.00 63.77%
780 requests in 10.06s, 182.81KB read
Requests/sec: 77.52
Transfer/sec: 18.17KB
平均每秒请求77.52次。
然后试一下使用laravel-swoole这个组件,借助swoole的优势,提升laravel项目的承载能力。
首先在项目根目录启动swoole的http服务:php artisan swoole:http start
然后nginx配置一下代理:
location ~ {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:1215;
}
确认访问域名后nginx转发给了swoole之后,再次进行压力测试。
jun@zhangjunshengdeMacBook-Pro ~ % wrk -t4 -c100 http://www.**.com/
Running 10s test @ http://www.**.com/
4 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 320.76ms 395.42ms 1.73s 78.16%
Req/Sec 146.82 143.99 0.88k 87.04%
4897 requests in 10.10s, 4.19MB read
Socket errors: connect 0, read 0, write 0, timeout 45
Requests/sec: 484.92
Transfer/sec: 425.14KB
平均每秒请求达到了484.92次。
借助swoole的异步,无阻塞快速消费MQ
TODO