Apache2 with worker.c
- ある程度設定が落ち着いてきたので、次にやることは高速化です。
- preforkで動いているのをthreadに変更するのが最も抜本的な対策かと思い、実行してみる。
- FreeBSDでthreadを使うためには、明示的に--enable-threadsを指定する必要があるようだ。
* If you are building on FreeBSD, be aware that threads will be disabled and the prefork MPM will be used by default, as threads do not work well with Apache on FreeBSD. If you wish to try a threaded Apache on FreeBSD anyway, use "./configure --enable-threads".
- これを踏まえて、./configureを走らせてみる。
./configure --prefix=/usr/local \ --enable-layout=FreeBSD \ --enable-threads \ --with-mpm=worker \ --enable-with-barkley-db=/usr/local/bin/db42 \ CPPFLAGS=-I/usr/local/include/db42 \ LDFLAGS=-L/usr/local/lib/db42 \ --enable-dav=yes \ --enable-dav-fs=yes \ --enable-headers=yes \ --enable-ssl=yes \ --enable-proxy=yes \ --enable-proxy-connect=yes \ --enable-proxy-ftp=yes \ --enable-proxy-http=yes \ --with-ssl=/usr/bin \ --enable-so=yes \ --enable-mods-shared='ssl proxy proxy-connect proxy-ftp proxy-http' \ --enable-auth-digest=yes make make install
- さっそくapachectl -tしてみると、何故か反応が返ってこない。
- 何かと思って調べたら、FreeBSD4.x系列でthreadを使うのはダメみたいっすね。orz
- 仕方ないので、元のpreforkに戻して再インストールしました。
- 他に出来ることは、不要なモジュールをdisableしてプロセスサイズを小さくする事と、httpd.confのパラメータ調整かな。
httpd -l
- 必要
- core.c
- 常に使用可能な Apache HTTP サーバのコア機能
- mod_access.c
- クライアントのホスト名、IP アドレス、その他のクライアントのリクエストの特徴に基づいたアクセス制御機能を提供する
- mod_auth.c
- テキストファイルを用いたユーザ認証
- mod_auth_digest.c
- User authentication using MD5 Digest Authentication.
- mod_log_config.c
- サーバへのリクエストのロギング
- mod_env.c
- mod_headers.c
- Customization of HTTP request and response headers
- mod_setenvif.c
- prefork.c
- スレッドを使わず、先行して fork を行なうウェブサーバを実装
- http_core.c
- mod_mime.c
- mod_dav.c
- mod_dav_fs.c
- mod_dav のためのファイルシステムプロバイダ
- mod_cgi.c
- mod_dir.c
- 「最後のスラッシュ」のリダイレクトと、ディレクトリのインデックスファイルを扱う機能を提供する
- mod_imap.c
- Server-side imagemap processing
- mod_actions.c
- mod_alias.c
- ホストファイルシステム上のいろいろな違う場所を ドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能を提供する
- mod_so.c
- 起動時や再起動時に実行コードとモジュールをサーバにロードする
- mod_autoindex.c
- core.c
- 不明
- mod_asis.c
- 自分用の HTTP ヘッダの書かれているファイルを送信する
- mod_negotiation.c
- コンテントネゴシエーション 機能を提供する
- mod_asis.c
- 不要かも
- mod_include.c
- サーバがパースする html ドキュメント (Server Side Includes)
- mod_status.c
- サーバの活動状況と性能に関する情報を提供する
- mod_userdir.c
- ユーザ専用のディレクトリを提供
- mod_include.c