|
オープンソースなApacheはWebサーバーとしてデファクトスタンダードです。 しかし、それ以外のWebサーバーもいくつかあります。 先の実験における、性能のボトルネックはどこにあるのかを調べるために、 より軽量で高速といわれるthttpd を試してみました。 なお、thttpdのtは、tiny、turbo、throttlingを意味するそうです。 先の実験のApacheはworkerモデルを選んでいます。これはマルチプロセス、マルチスレッドを併用したハイブリッドな方式です。 一方、thttpdはselectにより多重化しているシングルプロセス、シングルスレッドな方式です。 これらをいずれも、これをシングルコアのCPU上で実行させています。
thttpdについて詳しく知りたい方は以下のURLをご参照ください。 - http://ja.wikipedia.org/wiki/Thttpd
- http://www.acme.com/software/thttpd/
Apacheの場合
前回の結果の二つのグラフを引用しておきます。 
図1: 前回より、Apacheの場合のコネクション速度(単位:コネクション数/秒) - 赤色:Web Client - Apache Server、クライアントとサーバーを直結
- 緑色:Web Client - IP Router - Apache Server、LVS役マシンをIPルーターとして構成
- 青色:Web Client - LVS-NAT - Apache Server

図2: 前回より、Apacheの場合のデータレート(単位:KB/秒) - 赤色:Web Client - Apache Server、クライアントとサーバーを直結
- 緑色:Web Client - IP Router - Apache Server、LVS役マシンをIPルーターとして構成
- 青色:Web Client - LVS-NAT - Apache Server
thttpdの場合
前回と同じ条件で、thttpdを 使ってみました。 つまり、カーネルとそのバージョンも同じ、ネットワークも同じ、クライアントも同じ、IPルーターも同じ、LVS-NATも同じ環境で、Webサーバーだけをthttpdに変えただけです。 
図3: thttpdの場合のコネクション速度(単位:コネクション数/秒) - 赤色:Web Client - thttpd Server、クライアントとサーバーを直結
- 緑色:Web Client - IP Router - thttpd Server、LVS役マシンをIPルーターとして構成
- 青色:Web Client - LVS-NAT - thttpd Server

図4:thttpdの場合のデータレート(単位:KB/秒) - 赤色:Web Client - thttpd Server、クライアントとサーバーを直結
- 緑色:Web Client - IP Router - thttpd Server、LVS役マシンをIPルーターとして構成
- 青色:Web Client - LVS-NAT - thttpd Server
まとめ コネクション速度(単位:コネクション数/秒)について比較すると、LVS-NAT経由時に、Apacheでは9500コネクション/秒でした。一方、thttpdでは15500コネクション/秒でした。この差は、処理の複雑なApacheのオーバーヘッドであると思われます。 thttpdでもコネクション速度は有限でした。これらはTCPのコネクションのオーバーヘッド(3ウェイハンドシェイクによるコネクションの確立)、HTTPのオーバーヘッドだと思われます。 なお、1バイトのコンテンツをGETしても、以下のように、260バイトを超えるHTTPヘッダーが付加されています。 TCPヘッダーは改変長で20バイト以上、IPヘッダーも可変長で20バイト以上です。実際にはより多くのデータがイーサネット上を流れています。
$ telnet webserver 80 Trying 192.168.1.2... Connected to localhost. Escape character is '^]'. GET /1.html HTTP/1.0
HTTP/1.1 200 OK # ここからが応答 Date: Wed, 16 Jul 2008 04:07:02 GMT Server: Apache/2.2.3 Last-Modified: Thu, 10 Apr 2008 07:03:46 GMT ETag: "143171-1-44a7f6b291880" Accept-Ranges: bytes Content-Length: 1 Connection: close Content-Type: text/html; charset=UTF-8 Content-Language: ja
Connection closed by foreign host. データレート(単位:KB/秒)について比較すると、 Apache、thttpdどちらも、55MB/秒付近で頭打ちです。 HTTPサーバーがApacheでも、thttpでも大きな違いはありません。 WebサーバーとWebクライアントを直結しても、IPルーター経由にしても、LVS-NAT経由にしても大きな違いありません。 これらの結果から、ネットワーク、あるいはWebクライアントの性能がボトルネックになっている可能性が考えられます。
|