GAEのspin-up/down時間

GAE上のWSJSでアプリを書いてみて気がついたが GAE/J の spin-down は異常に早い。
どうも1分アクセスしないと spin-down してしまうらしい。
コンテンツを読んで次の画面に行こうとしたときには1分くらいたってしまうので毎回 spin-up しているような感じになる。

何も考えないと sipn-up には普通10秒くらいかかる。
Ajaxだと操作から10秒遅れて反応があるようだと使い物にならない。

とりあえず、同期呼び出しの待ち時間中はグルグルのgifを画面中央に表示するようにした。
これだけでもずいぶん使える様になった。

後は spin-up 時間を減らす訳だがこれが結構厄介だ。
従来のサーブレットの作りは
「起動時に出来るだけの事をやってアクセス時は軽く」
と言うのが基本だから設計の根本から変わってしまう。

まだ、これと言う対策は無いのだが幾つか効果が有ったように思う項目を上げて置く。
(バラツキが大きくて正直何が効果があるのか分かり辛いんだよね)

- JDO 完全に止めて LowLevel API にする。
-- JDO の初期化だけで3秒かかると言う説が有る。
-- つまり完全に止めないといけない。

- 初期化で必要になるクラスを減らす。
-- ライブラリも含めて。
-- どうも重いのは処理でなくクラスのロードらしい。
-- Configの生成を rhino の実行から直列化の復元に変えてみたが変化なかった。

- 当り前だが初期化でやることを極力減らす。
-- ちなみに Servlet.init() が呼ばれるまでに最低 1.5秒のマージンがある。

- Sessionを使うなと言う情報が有ったが実際にSessionを開くまでは関係無い様に思えた。


試行錯誤して現在の sipn-up 時間は 3000ms~4000ms になりました。
このぐらいだと何とか使い物になる感じです。
GAE/JのJVMはメモリが 100M らしいので swap-out/in した方が効率よさそうな気もするなー。

しかし、こんなんで GAE/J は普及するんですかね。
他にも制限多すぎるし。