付録B: 性能評価

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 の設定は次のとおりです。

Wyvernの設定
MaxThread64
MaxRequest128
Apacheの設定
MaxKeepAliveRequests100
KeepAliveTimeout15
MinSpareServers5
MaxSpareServers10
MaxClients150

ネットワーク距離

クライアントマシンからサーバマシンまでのネットワーク的な距離です。 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/

Wyvern と Apache の性能評価(Keep-Aliveなし)
Server Software: Wyvern/2.1.0Apache/1.3.26
Server Hostname: 192.168.1.3192.168.1.3
Server Port: 808080
Document Path: /index.html/index.html
Document Length: 68,052 bytes68,052 bytes
Concurrency Level: 100100
Time taken for tests: 10.002 seconds10.002 seconds
Complete requests: 113106
Failed requests: 00
Broken pipe errors: 00
Total transferred: 7,895,286 bytes9,548,062 bytes
HTML transferred: 7,866,488 bytes9,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)
minavgmaxminavgmax
Connect: 5225801083,291
Processing: 2755,1918,8861234,1518,903
Waiting: 2685,1918,8851164,1518,902
Total: 2755,2148,9081234,2598,923
Wyvern と Apache の性能評価(Keep-Aliveあり)
Server Software: Wyvern/2.1.0Apache/1.3.26
Server Hostname: 192.168.1.3192.168.1.3
Server Port: 808080
Document Path: /index.html/index.html
Document Length: 68,052 bytes68,052 bytes
Concurrency Level: 100100
Time taken for tests: 10.025 seconds10.002 seconds
Complete requests: 122115
Failed requests: 00
Broken pipe errors: 00
Keep-Alive requests: 122115
Total transferred: 8,456,637 bytes9,668,927 bytes
HTML transferred: 8,421,351 bytes9,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)
minavgmaxminavgmax
Connect: 03200727
Processing: 2081,92110,002622,9239,887
Waiting: 1991,92110,002622,9239,886
Total: 2081,92410,022622,9309,914

私見

2.0.x よりも格段にパフォーマンスが向上した! 静的コンテンツの提供だけなら十分実用的なウェブサーバとして機能しますね。 組み込み機器向けを前提に改良したので負荷も w(1) コマンドで調べた限りは、 0.10 を越えることはありませんでしたね。 Apache は 0.80 以上になることも多かったですが、fork(2) の影響かと思われます。