php-performance

服务器框架workerman和swoole性能简单测试

Workerman

Workerman是一款纯PHP开发开源高性能PHP socket 服务器框架。被广泛的用于手机app、手游服务端、网络游戏服务器、聊天室服务器、硬件通讯服务器、智能家居、车联网、物联网等领域的开发。 支持TCP长连接,支持Websocket、HTTP等协议,支持自定义协议。基于workerman开发者可以更专注于业务逻辑开发,不必再为PHP Socket底层开发而烦恼。

Swoole

PHP语言的异步、并行、高性能网络通信框架,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
Swoole可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网、车联网、智能家居等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。


Swoole采用C语言编写,相比使用原生PHP的Wokerman,性能更高,代码风格适合对socket操作比较熟悉的程序员使用(需要操作fd),对于一般PHP程序员有一定难度;

Wokerman文档比较齐全,学习起来更方便,代码逻辑比较清晰,风格统一,可以直接操作connection对象(以及为connection附加额外属性)而不需要太在意fd,对于普通PHP程序员更友好,而且因为使用原生PHP实现,出现问题也更好排查。

在使用时,需要根据实际情况,进行选择。

下面是二者http server性能的简单对比:

环境:阿里云ECS

OS:CentOS 7 x64

CPU:Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz(1 core 1GHz)

Memory:1G

ab -c1000 -n100000 -k http://127.0.0.1:8801/


lnmp(php-fpm5.4 nginx 1.8.0):

<?php

echo 'hello world!';

测试结果:

php-performance
php-performance

wokerman http server:

<?php

require_once __DIR__.'/vendor/autoload.php';

use Workerman\Worker;

$worker = new Worker('http://0.0.0.0:8801');
$worker->count = 4;
$worker->onMessage = function($connection, $data){
    $connection->send('hello world!');
};

Worker::runAll();

测试结果:

workerman-performance
workerman-performance(v3.0)

swoole http server:

<?php

$worker = new swoole_http_server('0.0.0.0',8801);
$worker->set(array('worker_num' => 4));
$worker->on('request', function($request, $response){
    $response->end('hello world!');
});

$worker->start();

测试结果:

swoole-performance
swoole-performance(v1.8.0)

结果对比:

keep-alive requests concurrency time taken failed requests write errors requests per second time per request transfer per rate
workerman v3.0 100000 1000 13.424s 0 0 7450.06 134.227ms 996.74Kbytes/s
swoole v1.8.0 100000 1000 6.435s 0 0 15539.57 64.352ms 2503.95Kbytes/s
%1 $ S

发表回复