Index > 非力なサーバへの対策...JSPを事前にコンパイルして設置
Mon, March 20, 2006

非力なサーバへの対策...JSPを事前にコンパイルして設置

先日のこと。VPSのサーバを利用しているのだが、 そのサーバに割り当てられたメモリが非常に少ないので、 JSPが実行時にコンパイルできないという事態が発生した。 (ちなみに、そのVPSでswap領域を設定しようとしたが許可されていなかった...当たり前か)

コンパイル済みのJSPなら作動させることができたので、 別マシンでコンパイルしておいて、その結果をサーバにコピーする方法をとることにした。

事前にコンパイル(PreCompile)

以下のような形でプレコンパイルはできる。 http://foobar/foo.jsp?jsp_precompile=true

別マシンでコンパイルした結果を反映(サーバにjettyを使用した場合)

今回のようにサーバにリソースが足りない場合、リソースのあるマシンで JSPのコンパイルを全部済ませた上で、サーバにコンパイル済みクラスを 配置したい。

問題はコンパイル済みクラスがどこにあるかわからないこと。 しかし、jettyのドキュメントを見てみると、 {marker:webapps/foo/WEB-INF/work} というディレクトリを 作成しておけば、ここがJSPのコンパイル作業ディレクトリとして使われる、と書いてある。

したがって、 このディレクトリを作成しておいて、ローカルマシンでJSPのプレコンパイルを 全部かけた後、その成果をそのままそっくりサーバにコピーしてやればよいことがわかった。

tomcatでも同じような処理ができるかもしれないが、 tomcatはjettyよりメモリ使用量が多いはずなので(チューニングすればいいのかもしれないが) まずは、jettyをためし、それからプレコンパイルという手順になるのではないか。

出典

http://jetty.mortbay.org/jetty/faq?s=250-Configuration&t=210tempdir

 Twitter
follow me on Twitter
 Categories