Wyvern と Apache とで簡単な性能評価を行った結果について報告します。 Wyvern のコンパイルはデフォルトのままで何もオプションを指定していません。 また、Apache は FreeBSD の ports をそのまま使用して導入しました。 ベンチマークツールには、Apache に附属の ab-1.3d を利用しました。
Wyvern および Apache が動作するマシンのスペックは以下の通りです。
CPU: | Cyrix GXm (300MHz) |
OS: | 4.7-PRERELEASE (2002/09/16) |
Mem: | 128MB |
Wyvern と Apache の設定は次のとおりです。
|
|
クライアントマシンからサーバマシンまでのネットワーク的な距離です。 ping(8)を利用して測定しました。
kouichi@swordfish[710][0:37] ping -c 10 192.168.1.3 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.496 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.486 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.477 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.475 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.480 ms 64 bytes from 192.168.1.3: icmp_seq=5 ttl=64 time=0.507 ms 64 bytes from 192.168.1.3: icmp_seq=6 ttl=64 time=0.697 ms 64 bytes from 192.168.1.3: icmp_seq=7 ttl=64 time=0.486 ms 64 bytes from 192.168.1.3: icmp_seq=8 ttl=64 time=0.563 ms 64 bytes from 192.168.1.3: icmp_seq=9 ttl=64 time=0.479 ms --- 192.168.1.3 ping statistics --- 10 packets transmitted, 10 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.475/0.515/0.697/0.066 ms
クライアントマシンからサーバマシンに下記に示すコマンドを実行した結果を 性能評価結果として示します。Keep-Alive のありとなしで実験しました。 ともに、同じ回数だけ試行したうちで、一番良い結果を選びました。 また、実験時にはサーバの負荷が w(1) コマンドで調べて、 0.00 になったときに実行しました。
% ab -c 100 -t 10 -k http://192.168.1.3/
% ab -c 100 -t 10 http://192.168.1.3/
Server Software: | Wyvern/2.1.0 | Apache/1.3.26 | ||||
Server Hostname: | 192.168.1.3 | 192.168.1.3 | ||||
Server Port: | 8080 | 80 | ||||
Document Path: | /index.html | /index.html | ||||
Document Length: | 68,052 bytes | 68,052 bytes | ||||
Concurrency Level: | 100 | 100 | ||||
Time taken for tests: | 10.002 seconds | 10.002 seconds | ||||
Complete requests: | 113 | 106 | ||||
Failed requests: | 0 | 0 | ||||
Broken pipe errors: | 0 | 0 | ||||
Total transferred: | 7,895,286 bytes | 9,548,062 bytes | ||||
HTML transferred: | 7,866,488 bytes | 9,500,874 bytes | ||||
Requests per second: | 11.30 [#/sec] | 10.60 [#/sec] | ||||
Time per request: | 88.51 [ms] (mean) | 94.36 [ms] (mean) | ||||
Transfer rate: | 789.37 [KB/s] received | 954.62 [KB/s] received | ||||
Connection Times (ms) | ||||||
min | avg | max | min | avg | max | |
Connect: | 5 | 22 | 58 | 0 | 108 | 3,291 |
Processing: | 275 | 5,191 | 8,886 | 123 | 4,151 | 8,903 |
Waiting: | 268 | 5,191 | 8,885 | 116 | 4,151 | 8,902 |
Total: | 275 | 5,214 | 8,908 | 123 | 4,259 | 8,923 |
Server Software: | Wyvern/2.1.0 | Apache/1.3.26 | ||||
Server Hostname: | 192.168.1.3 | 192.168.1.3 | ||||
Server Port: | 8080 | 80 | ||||
Document Path: | /index.html | /index.html | ||||
Document Length: | 68,052 bytes | 68,052 bytes | ||||
Concurrency Level: | 100 | 100 | ||||
Time taken for tests: | 10.025 seconds | 10.002 seconds | ||||
Complete requests: | 122 | 115 | ||||
Failed requests: | 0 | 0 | ||||
Broken pipe errors: | 0 | 0 | ||||
Keep-Alive requests: | 122 | 115 | ||||
Total transferred: | 8,456,637 bytes | 9,668,927 bytes | ||||
HTML transferred: | 8,421,351 bytes | 9,610,363 bytes | ||||
Requests per second: | 12.17 [#/sec] | 11.50 [#/sec] | ||||
Time per request: | 82.17 [ms] (mean) | 86.97 [ms] (mean) | ||||
Transfer rate: | 843.55 [KB/s] received | 966.70 [KB/s] received | ||||
Connection Times (ms) | ||||||
min | avg | max | min | avg | max | |
Connect: | 0 | 3 | 20 | 0 | 7 | 27 |
Processing: | 208 | 1,921 | 10,002 | 62 | 2,923 | 9,887 |
Waiting: | 199 | 1,921 | 10,002 | 62 | 2,923 | 9,886 |
Total: | 208 | 1,924 | 10,022 | 62 | 2,930 | 9,914 |
2.0.x よりも格段にパフォーマンスが向上した! 静的コンテンツの提供だけなら十分実用的なウェブサーバとして機能しますね。 組み込み機器向けを前提に改良したので負荷も w(1) コマンドで調べた限りは、 0.10 を越えることはありませんでしたね。 Apache は 0.80 以上になることも多かったですが、fork(2) の影響かと思われます。