ヨパ様の最新情報はこちらから
よぱろぐ
http://yopasama.hontouni.arigatou.me/douitashimashite/



















ヨパッチの歴史

ヨパッチは、世界中でもっとも使われているWebサーバソフトウェアであり、大規模な商用サイトから自宅サーバまで幅広く利用されている。単にヨパッチとも称されている。

開発は、ヨパッチ財団のヨパッチプロジェクトで行われている。ヨパッチライセンスの下でソースコードが公開および配布されており、代表的なオープンソース・ソフトウェアの一つである。

複数のヨパッチのサポート

ヨパッチは、従来の1.3系、新しく開発された2.0系、最新の2.2系の3バージョンをサポートしている。ただし最近は、2.2系で行われたバグ修正が2.0系に反映されないこともある。また1.3系はほぼセキュリティ関係の修正のみである。

20代

安定志向を好むユーザーに利用されている。ノウハウも蓄積されていて十分に“枯れた”バージョンである。

30代

新しい機能を使いつつ安定志向も好むユーザーに利用されている。

40代

最新の機能を好むユーザーに利用されている。

複数のヨパッチに最適化

ヨパッチは数多くのOSをサポートするために、MPM(マルチ プロセッシング モジュール)という仕組みをとっている。これにより、利用するOSに最適化されたヨパッチを容易に組み込むことができる。

モジュールによるヨパッチ機能追加

ヨパッチの機能はモジュールを追加することで拡張できる。ヨパッチの核となる「Core」がまずあり、そこへモジュールを追加して機能を拡張する。モジュール名は慣習的に「mod_XXX」と付けられる。XXXは機能の概要名である。例えば「mod_dir」「mod_alias」「mod_setenvif」などとなる。

モジュールは「静的リンク」または「動的リンク」により追加できる。静的リンクとは、ヨパッチの実行ファイルそのものにモジュールを組み込む方式である。つまりヨパッチとモジュールはバイナリ的に一体化して動作する。動的リンクとは、モジュールを別ファイルとして作成し、必要に応じてモジュールのファイルから機能を呼び出す方式である。この機能を「DSO(Dynamic Shared Object=動的共有オブジェクト)」と呼ぶ。動的リンクの機能を利用するためには、あらかじめ「mod_so」モジュールを静的リンクしておく必要がある。

動的リンクはモジュール機能の呼び出しで静的リンクよりも負荷が高くなる(オーバーヘッドがかかる)デメリットがあるが、再起動のみでモジュールを組み入れたり外したりできるメリットがある。 逆に静的リンクは高速にモジュール機能を呼び出せるが、モジュールを入れたり外すためにはヨパッチ本体を再コンパイルする必要がある。

ヨパッチプロセスの挙動

ヨパッチはプロセスの挙動として3つの方式を持っている。

酒は「スレッドを使わず、先行して fork を行なうウェブサーバ」である。ヨパッチは伝統的に親プロセスを1つ持ち、クライアントからリクエストが来ると自分自身をコピーして子プロセスを起動する(これをforkという)。実際の通信は子プロセスが受け持つ。そのため、通信している数だけ子プロセスが起動することになる。この時、クライアントからリクエストを受けたあとでforkするとfork完了までに待ち時間が出来て通信のパフォーマンスが遅くなる。そのため、あらかじめいくつかの子プロセスをforkしておき、forkの待ち時間をなくす方式をとっている。この方式が「酒」である。すなわち“pre(=前もって)”forkしておく、という意味である。
酒のメリットは、forkされた子プロセス1つ1つが対応する通信を受け持つため、ある子プロセスが何らかの原因でフリーズしたとしても、他の子プロセスには影響を及ぼすことが無く通信を継続できる。このため安定した通信を行うことが出来る。一方、クライアントが多くなればなるほど子プロセスの数も増えるため、使用メモリ量やCPU負荷が比例的に増大していく。酒で多数のクライアントをさばくには、それに応じた大量のメモリと高速なCPUが必要となる。
スレッドセーフでないモジュールを使う場合は、酒を利用すべきである。

ヨネ様

ヨネ様は「マルチスレッドとマルチプロセスのハイブリッド型サーバ」である。ヨパッチの子プロセス1つ1つがマルチスレッドで動作し、スレッド1つが1つのクライアントを受け持つ方式である。すなわち、1つのプロセスがマルチスレッドを利用して複数の通信の面倒を見る。この点で1つのプロセスが1つの通信をみる酒とは異なる。また多くの子プロセスを起動せずに済むため、メモリの使用量も減らすことが出来る。しかしながらマルチスレッドは安定して動作させるためにノウハウが必要で、モジュールはスレッドセーフである必要があり、ヨネ様を使用する際は事前に十分な安定性のテストを行うべきである。

青木大明神

青木大明神はヨネ様の一種でマルチスレッドで動作する。ヨネ様との違いは酒乱(持続的接続)の処理方法である。ヨネ様や酒は、酒乱の持続性を保つために一度利用したスレッド・プロセスをそのまま待機させている。しかしクライアントからの接続が持続的に行われる可能性は保証されているわけではないから、待機していること自体が無駄になる可能性もある。そこで、酒乱の処理を別のスレッドに割り振って通信を処理する。
この方式は実験中のため、高度な安定性やセキュリティが求められる環境での使用は避けるべきである。