node.jsとPHPのパフォーマンスの比較
提供: Node.js/JavaScript入門
スポンサーリンク
node.jsのHTTPサーバとPHP, Apache + PHPにおける単純なパフォーマンスの比較を行いました。
概要
以下のHTTPサーバでテストを行いました。
- node.js http サーバ
- PHP 単体のHTTP サーバ
- Apache 2.4 + PHP (mod_php)
実行環境は、以下の通りです。
- FreeBSD 10.0
- VM 環境
測定に使ったコマンドは、Apache Bench (ab) です。
なお、並列数を200にすると ab が apr_socket_connect(): Connection reset by peer (54) となったので、100より先は、やってません。
ベンチマークの結果
ベンチマークの結果は、以下の通りです。
並列 | node.js | php | apache+php |
---|---|---|---|
10 | 2636 | 7080 | 4639 |
100 | 2463 | 7325 | 2978 |
以下 ab の実行結果
node.js
$ ab -n 100000 -c 10 http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 12 bytes Concurrency Level: 10 Time taken for tests: 37.936 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 11300000 bytes HTML transferred: 1200000 bytes Requests per second: 2636.01 [#/sec] (mean) Time per request: 3.794 [ms] (mean) Time per request: 0.379 [ms] (mean, across all concurrent requests) Transfer rate: 290.89 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 14 Processing: 0 4 1.9 4 85 Waiting: 0 4 1.9 4 85 Total: 1 4 2.0 4 86 Percentage of the requests served within a certain time (ms) 50% 4 66% 4 75% 4 80% 4 90% 5 95% 5 98% 7 99% 11 100% 86 (longest request)
php
$ ab -n 100000 -c 10 http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 12 bytes Concurrency Level: 10 Time taken for tests: 14.124 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 12400000 bytes HTML transferred: 1200000 bytes Requests per second: 7079.97 [#/sec] (mean) Time per request: 1.412 [ms] (mean) Time per request: 0.141 [ms] (mean, across all concurrent requests) Transfer rate: 857.34 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 5 Processing: 0 1 0.5 1 12 Waiting: 0 1 0.5 1 12 Total: 0 1 0.5 1 12 Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 1 90% 2 95% 3 98% 3 99% 4 100% 12 (longest request)
apache 2.4 + php
$ ab -n 100000 -c 10 http://localhost/t/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Apache/2.4.9 Server Hostname: localhost Server Port: 80 Document Path: /t/ Document Length: 12 bytes Concurrency Level: 10 Time taken for tests: 21.556 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 22500000 bytes HTML transferred: 1200000 bytes Requests per second: 4639.06 [#/sec] (mean) Time per request: 2.156 [ms] (mean) Time per request: 0.216 [ms] (mean, across all concurrent requests) Transfer rate: 1019.33 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.4 0 26 Processing: 0 2 2.8 2 205 Waiting: 0 2 2.7 1 204 Total: 0 2 2.9 2 205 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 2 90% 3 95% 4 98% 5 99% 6 100% 205 (longest request)
node
$ ab -n 100000 -c 100 http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 12 bytes Concurrency Level: 100 Time taken for tests: 40.603 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 11300000 bytes HTML transferred: 1200000 bytes Requests per second: 2462.88 [#/sec] (mean) Time per request: 40.603 [ms] (mean) Time per request: 0.406 [ms] (mean, across all concurrent requests) Transfer rate: 271.78 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.3 0 30 Processing: 12 40 7.1 40 110 Waiting: 12 40 7.0 39 110 Total: 13 40 7.1 40 110 Percentage of the requests served within a certain time (ms) 50% 40 66% 41 75% 41 80% 43 90% 48 95% 53 98% 58 99% 63 100% 110 (longest request)
php
$ ab -n 100000 -c 100 http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 12 bytes Concurrency Level: 100 Time taken for tests: 13.652 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 12400000 bytes HTML transferred: 1200000 bytes Requests per second: 7325.00 [#/sec] (mean) Time per request: 13.652 [ms] (mean) Time per request: 0.137 [ms] (mean, across all concurrent requests) Transfer rate: 887.01 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 13 Processing: 7 14 2.5 13 37 Waiting: 6 13 2.4 13 36 Total: 11 14 2.5 13 37 Percentage of the requests served within a certain time (ms) 50% 13 66% 13 75% 13 80% 13 90% 14 95% 18 98% 22 99% 28 100% 37 (longest request)
apache 2.4 + php
$ ab -n 100000 -c 100 http://localhost/t/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking localhost (be patient) Completed 10000 requests Completed 20000 requests Completed 30000 requests Completed 40000 requests Completed 50000 requests Completed 60000 requests Completed 70000 requests Completed 80000 requests Completed 90000 requests Completed 100000 requests Finished 100000 requests Server Software: Apache/2.4.9 Server Hostname: localhost Server Port: 80 Document Path: /t/ Document Length: 12 bytes Concurrency Level: 100 Time taken for tests: 33.570 seconds Complete requests: 100000 Failed requests: 0 Total transferred: 22500000 bytes HTML transferred: 1200000 bytes Requests per second: 2978.84 [#/sec] (mean) Time per request: 33.570 [ms] (mean) Time per request: 0.336 [ms] (mean, across all concurrent requests) Transfer rate: 654.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 7.4 0 704 Processing: 6 33 36.9 30 830 Waiting: 2 30 31.7 29 829 Total: 10 33 37.8 30 830 Percentage of the requests served within a certain time (ms) 50% 30 66% 32 75% 34 80% 35 90% 42 95% 47 98% 61 99% 82 100% 830 (longest request)
関連項目
ツイート
スポンサーリンク