Apache、Nginx、Node.jsの速度比較ベンチマーク【静的ファイル】

  • 2016-2-11
20171219

apacheのMaxClientやNginxのworker数など、
conf等の詳細はある程度最適化してあります。

環境はさくらクラウドのメモリ2GB 2Core/4Coreです。
12回abコマンド(-c 1000 -n 1000)を異なるサーバから叩いてRequestsPerSecondを調べます。
そこから、最小と最大を省いた10回の平均値を出します。

nodejsの場合、マルチプロセス化しないとコア数が増えた時に意味が無いので、
今回はCluster化する/しないも検証します。

返すレスポンスデータは全て同一byteのテキストベースで、静的なファイルです。

検証結果

2Core Apache 573 1257 952 329 1229 2588 910 1284 1049 1338 1267 1309
2Core Nodejs 984 960 1317 3063 950 937 3087 914 472 952 960 956
2Core Nodejs(Cluster化) 962 1119 3634 4007 782 913 922 1046 1144 1287 1354 1592
2Core Nginx 935 510 1248 1292 1286 357 122 928 457 907 931 945
2Core Nginx(cache) 3182 1127 956 1320 900 2236 955 610 1548 951 945 943
4Core Apache 944 1263 1295 1285 578 1295 917 545 1297 952 1337 1062
4Core Nodejs 1316 3414 4825 2676 2981 1260 3037 3364 940 956 939 1299
4Core Nodejs(Cluster化) 3309 2990 1312 1537 1732 2048 2987 1874 2052 2086 2363 2517
4Core Nginx 934 937 1330 961 1214 1138 955 1122 953 940 936 965
4Core Nginx(cache) 3421 1439 1498 826 950 929 1029 982 1059 940 2606 2760

平均値

2Core Apache 1116
2Core Nodejs 1201
2Core Nodejs(Cluster化) 1434
2Core Nginx 850
2Core Nginx(cache) 1188
4Core Apache 1088
4Core Nodejs 2124
4Core Nodejs(Cluster化) 2218
4Core Nginx 1012
4Core Nginx(cache) 1419

結論
静的なレスポンスのみであれば、webサーバは何でもいいんじゃないですかね。
ほとんどの場合、DBが絡んで動的になりますし。

ただ、WordPressのような場合はNginxでフルキャッシュ環境にしたほうが速いし、
大規模MMOのようなキャッシュが使えない環境であればNodejsでクラスタ化したほうが速いですし。

というわけで今度はnodejs/Mysql/Redisで検証してみます。

関連記事

ページ上部へ戻る