为何用swoole来实现 Yar server
- 提升Yar服务端执行效率
- 学习swoole, yar(在此感谢laruence,rango及swoole开发团队)
Requirements
- php5.4+
- ext-swoole 1.8.8+
- ext-msgpack 如果yar使用msgpack编码方式
Installation
1 |
composer require stcer/syar |
简单性能测试
测试脚本 example/benchmark.php, 测试环境(虚拟机)
- cpu: i5 – 4460
- mem: 4G
- os: centos6.5
- php: php7(fpm: 20进程, swoole: 18进程(8 worker + 10 task)
脚本一共完成44次接口调用:
- 简单接口调用 2次
- 数据库查询接口调用2次
- 并发简单接口调用 20次
- 并发数据库查询接口调用 20次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
function test($type, $times = 5, $limit = 5){ $timer = new Timer(); $benchmark = new Benchmark($type); $rs[] = $benchmark->simpleTest(); // 2 $rs[] = $benchmark->dbTest($limit); // 2 $rs[] = $benchmark->batchTest($times, $limit); // 20 $rs[] = $benchmark->concurrentTest($times, $limit); // 20 $stop = $timer->stop(); // 44 calls, 22 db, 22 normal foreach($rs as $v){ var_dump($v); } return $stop; } // start test $times['syar'] = test('syar'); $times['fpm'] = test('fpm'); var_dump($times); --------------------------- output: array(2) { ["syar"]=> float(0.01271) ["fpm"]=> float(0.08602) } |
在当前测试环境下,fpm环境下的执行时间大概是syar下的4 — 6倍左右, 稍后做更详细的压力测试,服务器、客户端资源占用情况测试
github:https://github.com/stcer/syar