Apache2.4カウントダウン?
タイトルではapache2.4と書いてしまいましたが、開発版のapache2.3の最初のリリース(2.3-alpha)の計画がMLに流れただけです。
2.3リリースから安定版の2.4リリースまでどれぐらいかかるかは分かりません。2.1-betaから2.2リリースまで9ヶ月ぐらいかかっているようなので、今回もそんなものかもしれません。
apache2.4はそんなに目をひく新機能は見つかりません。(プログラミング言語)Luaが使える新モジュールが標準で入りましたが、地味です。
experimentalではなく、新しいmpmが入っています。名称はsimpleです。説明文に'poll callback event system'とあるのでこれだけ読んで勘違いしそうですが、(巷で高速をうたうhttpサーバが採用する)いわゆる1スレッド・ノンブロッキングI/Oモデルではありません。モデル的にはいわゆるworker-threadモデルです。ただし、従来のworker mpmとは少しだけ動作が違います。
従来のworker mpmでは、listener threadがソケットをpoll(2)して、accept(2)可能になるとaccept(2)して、TCPセッション確立後のソケットをworker threadに渡します。その後は、worker threadがそのHTTPセッションの面倒を見ます。難点として、クライアントがだらだらとHTTPのやりとりをしたり、keep-aliveでセッションを張りっぱなしでHTTPのやりとりを続けるとworker threadが占有されてしまいます。意図的にHTTPでポーリングしてくるクライアントでない限り、apache側のタイムアウトを適切に設定すればworker threadは解放されますが、worker threadの占有が増えれば、結果的に、さばける同時アクセス数は減ります。
simple mpmでもlistener threadがソケットをpoll(2)して、accept(2)後にTCPセッション確立後のソケットをworker threadに渡すまでは同じです。その後、(正確なタイミングは不明ですが(*))worker threadはソケット監視をlistener threadのpoll(2)に戻して、worker thread自身がスレッドプールに戻ります。理想的に動作すれば、占有されて遊休に近いworker threadが減るので、並行性は上がりそうです。
もっとも机上で考えるほど理想的に動作するかはなんとも言えません。不当にスレッド切替えが頻発してパフォーマンス劣化の可能性もあるからです。
(*)コードを眺めるだけではread、writeをノンブロッキングにしているかも不明です。
- Category(s)
- カテゴリなし
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/inoue/apache2.4-alpha/tbping
- オフィス移転
- ¦
- Main
- ¦
- 中目黒の支配権を譲ります