fastcgi(Catalyst,perl)+lighttpdでよくウェブアプリをつくるのですが Copy on Writeの恩恵を受け、メモリを節約するために、 fastcgiの親プロセスで網羅的にperlモジュールを読み込んでおき、 子プロセスの親プロセスとで共有するメモリを増やしたくなります。
子プロセスでどんなモジュールをrequireしてるのか? がわかればMyApp.pmでuseしておくことで親プロセスで読み込めます。
それをわかりやすくするためのCatalystプラグインを作りました。
MyApp.pmで
__PACKAGE__->setup(do {
my @plugins;
push @plugins, 'StackTrace', 'DumpRequired' if $ENV{CATALYST_DEBUG};
@plugins;
});
とかするといいと思います。
いろんなパスを通るようにrequest投げると $c->log->debug にrequireしたモジュールが出てきます。
以下参考にさせていただきました。 mod_perlで親プロセスとのCopy on Writeな共有メモリを増やす方法