Ikeda->Weblog();

Ikedaの徒然雑記。

[メモ] FreeBSD上のApacheをworkerで使う

| 0件のコメント

[] FreeBSD上のApacheをworkerで使う超個人的備忘録。

FreeBSD上でApacheをビルドすると、デフォルトのMPMがpreforkとなります。
これはこれで枯れていてヨイのですが、パフォーマンスを求めるにはオーバーヘッドが多く、向いていません。ここは一発、スレッドを使う worker モードにしたいところ。

し・か・し・・・・
単純に configure オプションに –with-mpm=worker と書いただけではコンパイル(正確にはリンク)エラーが出てしまいました。ap_thread_ナントカ って関数が見つからない、とわめいています。

さて、どうしたもんか。。



ごそごそ探ってみると、、これは Portable Runtime library なるライブラリに含まれているモノらしく。こんなもん別売りで入れるのか?と思ったら、、あるじゃないですか、Apacheのソース内に。

$APACHE_SRC/srclib/apr 下にライブラリソースが展開されています。configureも同梱。これを生かすために、configure に –with-included-apr オプションをつけます。

ということで、こんな感じ。

% ./configure –with-included-apr –with-mpm=worker –enable-modules=…..

さーこれでばっちりワーカホリックスレッドだ!

と思ってたら落とし穴。というかすっかり忘れてました。

PHPがスレッドセーフではないのです。
そのままApacheを再起動すると

[Tue Jun 24 10:35:09 2008] [crit] Apache is running a threaded MPM, but your Module is not compiled to be threadsafe. You need to recompile .

(意訳) Apacheはthreaded-MPMで動作してん。けど、あんたのPHPモジュールがスレッドセーフになってへんで~。はよPHPリコンパイルしてや!

と、なぜか大阪弁風で怒られます。

うーむ、困った。PHPをスレッドセーフにすることはまだ「非推奨」のようですが、、、、、

やっちゃいますか(ω *)ハァハァ
ということで、PHP及びPHPエクステンションのリコンパイルでっす。
PHPは configure オプションに –enable-maintainer-zts を追加し、configure&インストール。

エクステンションとして eAccelerator を使っていたので、これもついでにバージョンアップしてconfigure&インストール。

ということで、、、いよいよ Apache を再起動しましょう。
エラーログを監視しつつリスタート、、、、お。無事に起動したようです^^)b

どんな副作用が出てくるかまだわかりませんが、しばらくこのままで運用してみます^^

今回使用したソフトウェアのバージョン
  • 5.5-RELEASE-p9
  • Apache 2.2.9
  • PHP 4.4.8
  • eAccelerator 0.9.5.3
『今時、まだPHP4かよ』って突っ込みは全てスルーの方向で。
(ω  )y-~~ いろいろあるんだよ。

コメントを残す