5

NodeJS と Apache + PHP のどちらが速いかを比較するために、ベンチマークを作成しました。

「Hello world」アプリケーションをテストしたときは Node の方が高速でしたが、http.get 関数を使用しようとすると、まったく別の話でした。

NodeJS が非常に遅くなるのはなぜですか? http.get で扱っていますか?または何?

テスト環境

CPU Intel(R) Core(TM) i5 CPU M 430 @ 2.27GHz
メモリ 2927MiB
OS Ubuntu 12.04 LTS
テスト プラットフォーム Apache ベンチ
NodeJS v0.8.2
アパッチ アパッチ/2.2.22
PHP PHP 5.3.10-1ubuntu3.2 と Suhosin-Patch (cli)

1. ハローワールドアプリケーション:

NodeJS コード:

var http        = require('http');

http.createServer(function(req, res) {

    res.writeHead(200, {"Content-Type": "text/html"});

    res.end('hello world');    

}).listen(8888);

PHP コード:

<?php

    echo "hello world"

?>

結果:

見出し

ab -n 10000 -c 10 ホスト名 .
10.000 リクエスト、10 同時 (秒単位の時間)

ノードJS 1.337 1.361 1.313 1.312 1.329
アパッチ + PHP 3.923 3.910 3.917 3.926 3.921

ab -n 10000 -c 100 ホスト名

10.000 リクエスト、100 同時 (秒単位の時間)

   
ノードJS 1.326 1.369 1.330 1.333 1.459
アパッチ + PHP 3.933 3.917 3.940 3.908 3.913

ab -n 100000 -c 300 ホスト名

100.000 リクエスト、300 同時 (秒単位の時間)

ノードJS 13.560 13.647 13.784 13.807 14.082
アパッチ + PHP 44.061 41.516 41.523 41.466 41.465

2. プル フィード アプリケーション:

NodeJS コード:

var http = require('http');


var options1 = {
          host: 'www.google.com',
          port: 80,
          path: '/',
          method: 'GET'
        };

http.createServer(function (req, res) {


    http.get(options1, function(response) {

        response.on('data', function (chunk) {

        });

        response.on('end', function (chunk) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end('ok');
        });

    });


}).listen(8888);

PHP コード:

<?php
    file_get_contents('http://www.google.com');

    echo 'ok';
?>

結果:

* ab -n 100 -c 10 ホスト名 *

100 件のリクエスト、10 件の同時リクエスト (秒単位の時間)

NodeJS 8.034 8.492 8.619 7.464 7.950
アパッチ + PHP 18.648 16.699 19.428 17.903 18.297

* ab -n 1000 -c 10 ホスト名 *

1000 リクエスト、10 同時 (秒単位の時間)

NodeJS 68.361 74.705 78.473 74.138 66.779
アパッチ + PHP 150.568 159.024 161.179 160.819 157.605

* ab -n 10000 -c 100 ホスト名 *
10.000 リクエスト、100 同時 (秒単位の時間)

ノードJS 1666.988 739.370         
アパッチ + PHP 310.062 244.485         

* ab -n 10000 -c 50 ホスト名 *
10.000 リクエスト、50 同時 (秒単位の時間)

ノードJS 256.096 260.625         
アパッチ + PHP 149.422 154.422         
4

1 に答える 1

2

コードを次のように変更しました。

NodeJS コード:

var http = require('http');

http.globalAgent.maxSockets = 100000;    

var options1 = {
          host: 'www.google.com',
          port: 80,
          path: '/',
          method: 'GET',
          headers: {
              'Connection':'keep-alive'
          }
        };

http.createServer(function (req, res) {


    http.get(options1, function(response) {

        response.on('data', function (chunk) {

        });

        response.on('end', function (chunk) {
            res.writeHead(200, {'Content-Type': 'text/html'});
            res.end('ok');
        });

    });


}).listen(8888);

でも…あんまり変わらなかった。少し速くなりましたが、Apache+PHP と比べると非常に遅いです。

于 2013-01-31T16:03:30.417 に答える