IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Node.JS vs PHP CLI Server 简单的HTTP服务器性能测试

    李惟发表于 2015-01-20 04:27:08
    love 0

    环境:

    • 64位Ubuntu14.04,i5-3230M
    • PHP5.4.31 with ZendOPcache
    • Node.JS 0.10.35

    Node.JS 测试

    var http = require('http'); 
    http.createServer(function (req, res) { 
        res.writeHead(200, {'Content-Type': 'text/html;charset=UTF-8'}); 
        res.write('<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>Node测试</title></head><body>'+new Date().getTime()+'</body></html>'); 
        res.end(); 
    }).listen(8082, '127.0.0.1');

    运行程序:

    node t.js

    查看系统CPU空闲率:

    sar 1

    压力测试,并发100,完成10万请求:

    ab -c100 -n100000 http://127.0.0.1:8082/t.js

    内存从11MB涨到61MB,系统CPU空闲率65%, RPS达到6049.

    o_215125_VQRC_561214

    o_215152_XAqa_561214

    o_215210_Aduo_561214

    PHP CLI Server 测试

    <?php header('Content-Type: text/html;charset=UTF-8'); ?> 
    <!DOCTYPE html><html><head><meta charset="UTF-8" /><title>PHP测试</title></head><body><?php echo time(); ?></body></html>

    运行程序:

    php -S 127.0.0.1:8081 -t ./

    查看系统CPU空闲率:

    sar 1

    压力测试,并发100,完成10万请求:

    ab -c100 -n100000 http://127.0.0.1:8081/t.php

    内存从19.6MB涨到20.0MB,系统CPU空闲率57%, RPS达到11405.
    不开启OPCACHE时,内存从8.3MB涨到9.0MB,系统CPU空闲率57%,RPS达到8851.

    o_215900_au5G_561214

    o_215359_thq4_561214

    o_215910_IOy9_561214

    PHP Swoole 测试

    <?php 
    $http = new swoole_http_server("0.0.0.0", 9501); 
    $http->set([ 
        'worker_num' => 5 //开启5个工作进程 
    ]); 
    $http->on('request', function (swoole_http_request $request, swoole_http_response $response) { 
        $response->header('Content-Type', 'text/html;charset=UTF-8'); 
        $response->end('<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>PHP测试</title></head><body>'.time().'</body></html>'); 
    }); 
    $http->start(); 

    运行程序:

    php swoole.php

    查看系统CPU空闲率:

    sar 1

    压力测试,并发100,完成20万请求:

    ab -c100 -n200000 http://127.0.0.1:9501/swoole.php

    测试后内存占用达到117MB,系统CPU空闲率39%, RPS达到19216.

    o_061500_XDrd_561214

    结论:Node.JS和PHP CLI Server都是单进程处理 HTTP 请求,但RPS上PHP几乎是Node.JS的两倍,内存占用上PHP却只有Node.JS的1/3。Node.JS值得称道的是,系统CPU空闲率要比PHP高8%左右。PHP Swoole应用了多进程和多线程,RPS近20K,充分利用了多核,所以CPU空闲率也是三者中最低的。另外,PHP-FPM虽然不支持HTTP协议,但其处理PHP请求的性能并不会比PHP CLI Server差,而且PHP-FPM可以开启多个工作进程,充分利用多核。

    @eechen

    这个评测目前只针对作为web服务来进行,不包含HTTP服务以外的场景。无论PHP还是NodeJS都是一门很好的语言,PHP对web开发有很大的优势,性能优越,开发便捷,效率高,而作为node也有他的强项,例如npm中的资源是非常丰富的

    相关文章:

    比较Perl、PHP、Python、Java和Ruby

    http://levi.yii.so/archives/711

    您可能也喜欢:

    使用CloudFlare提升网站的访问体验和安全性

    linux使用crontab实现PHP执行定时任务

    WEB前端底层知识--浏览器是如何工作的

    初识 jQuery Deferred

    Node.js开发指南——第3章安装Node.js快速入门(一)
    无觅


沪ICP备19023445号-2号
友情链接