[kansaipm] use & fork

999 at leto.eonet.ne.jp 999 at leto.eonet.ne.jp
Fri Oct 3 09:03:09 CDT 2003


はじめまして。かたやまです。

僕は5.8系は使ったことないので、お役に立てるかわかりませんが...。
的外れな答え又は、間違った意見ならごめんなさい。
(指摘して頂ければ幸いです。)


>レスポンスを早く返すために出来る限りレスポンスごとのコンパイル量を
>減らしたいのですが、...
CPU効率はforkしたほうが良いと思いますが、
fork(プロセス生成)すること自体に負荷が掛かると思うので、
スレッド化する必要があるかどうかということでしょうね。
あとはevalの使用を最小限にすることで良いと思います。


> forkした後に use を実行すると、...
そもそも
use Module;
 とは、
BEGIN { require "Module.pm"; import Module }
と同じことなので、
use文はプログラム(親プロセス)の最初の辺に書いておく。


>コンパイル結果はforkしたプロセスが終了した時点で消えてしまいます。
`fork`したプロセス(子プロセス)は、
親プロセス(コンパイルされたCGI)をコピーしたものですから
問題ないのでは。


>また、それぞれのサブプロセス中でコンパイルされた、その他のevalの
>コンパイル結果も消えてしまいます。
evalを使うと(それぞれ実行時にコンパイルされるので)仕方ないと思います。
evalを使わずになんとかする方法を考えます。


?:
 mod_perlでforkすると、どうなんだろ?
 キャッシュするのかな?


----
>このMLには初の投稿になります。
>デジタルパッド 杉田と申します。
>
>もし、このMLにふさわしくない話題であれば、ご指摘下さい。
>
>現在、perl5.8 にて以下のようなアプリケーションを作ろうと思っています。
>プラットホームはUnix系です。
>
>1. ユーザー権限でデーモン起動する。
>2. 外部のプロセスからデーモンに対して、リクエストを受け付ける。
>   pipeまたはunix socketを想定。
>3. リクエストに応じてデーモンはサブプロセスをforkし、その中で処理を
>   おこない、pipeまたはunix socket経由でレスポンスを返す
>
>具体的には、apacheからcgiまたはfastcgiを通じて、ネットワーク経由の
>リクエストを受け付け、リクエストで指定されたスクリプトをデーモンで
>実行してレスポンスを返す、というものを作りたいと思っています。
>
>問題になっているのは、forkしたときの use (というよりは require)の
>動作です。
>レスポンスを早く返すために出来る限りレスポンスごとのコンパイル量を
>減らしたいのですが、forkした後に use を実行すると、コンパイル結果は
>forkしたプロセスが終了した時点で消えてしまいます。
>また、それぞれのサブプロセス中でコンパイルされた、その他のevalの
>コンパイル結果も消えてしまいます。
>
>これを何とかしてキャッシングされるようにする方法はないでしょうか?
>
>いくつか考えてみたのですが、どうもしっくり来るものがありません。
>
>1. そもそもforkしてサブプロセスを起動しない。
>   → リクエストが集中したときに待たされるリクエストが増える
>   → リソース(CPU,IO,Databaseなど)の有効活用ができない
>
>2. サブプロセス中で use(require)が実行されたらメインプロセス側に
>   フィードバックして、requireだけ実行させる
>   → 次の同じuseは処理されないで済むが、二つのプロセスで別々に
>      コンパイルが実行される
>   → eval のコンパイル結果を保存できない
>
>3. サブプロセスを終了させないで、使い回しする。
>   → サブプロセスの数だけコンパイルが実行されることになる
>      そもそもこれなら、わざわざデーモン立ち上げないでも、fastcgiで
>      事が足りてしまう。
>
>4. forkではなくthread を使う
>   → スレッドセーフでないモジュールが使えない(どのモジュールが
>      スレッドセーフなのかすらわからないんですが。。。)
>
>こんなところなのですが、なにかいいアイデアはないでしょうか?
>
>///////////////////////////////
> SUGITA Toshinori 杉田 敏典      Digital Pad Inc.    .・.         
>   E-MAIL  : sugita at d-pad.co.jp                       ●・
>   WebPage : http://www.d-pad.co.jp/
>   メール・スクランブル http://www.d-pad.co.jp/mail/scramble/
>   アンケートしよう!   http://www.d-pad.co.jp/enquete/make/
>   有名人にメールしよう http://www.d-pad.co.jp/mail/fame/
>   アクセス解析サービス http://www.d-pad.co.jp/inspect/


/************************************************ 
 * 2003/10/03(金) 
 * かたやま <999 at leto.eonet.ne.jp> 
 ************************************************/



More information about the Kansai-pm mailing list