2005年10月05日

転職した先輩がフットサルに誘ってくれて、 今日はほんとは浦安まで行くはずだったのに。 雨降っちゃって、中止。

すげぇ残念。もう気分がサッカーモードだったので。

なんかテンションが下がって、チンタラチンタラ仕事しちゃって。 結局夜中まで。

しかも今週の日曜は出勤らしい@市ヶ尾のセンター。

今度はバッチじゃなくて、Webアプリケーションの方の性能対策。 おそらく何千万回とかループが回るわけじゃないから、 やるとしたらSQLなんだろうなぁ。 DBまわりはほんと苦手なんですけど・・・。

っていうか、今日びっくりしたことがあって。 センターからバッチでOutOfMemoryErrorが出ました! なんていう電話がかかってきた。 んでJavaの起動オプションみてもらったら、デフォルトです、、って。

ちょーいかちいサーバー使ってんすよ。 ハードはまじすごいんすよ。 それを、あなた。 ヒープ領域をデフォルトの64メガで蹴ってどうすんだよって。。

まぁ、それはそれとして、いい機会だ、とか思って いろいろ調べてみた。JavaVMの起動オプション。

そしたら、-serverオプション。

JavaVMって二つの実装が組み込まれてる。 clientとserver。 で、デフォルトではclientで起動する。 clientってのはいわゆるAppletとか用で。 起動が早くて必要なメモリ量を最小限にしてくれる。 -serverオプションをつけて、はじめてサーバーあぷりで 最適な起動がなされるってわけです。

・・・。 実は前に俺が作ったシステムってclientでバッチが 動いてるのね。。って。 どうなんだろう。電話してみようかなぁ、昔のお客さん。 たぶん早くなるよ。処理。 こんなページもありました。。

他にもUseBoundThreadはSolaris9じゃ使えない、とか。 各ベンダのVMによってもいろいろ違うみたい。 っていうかそもそもカーネルスレッドとJavaのスレッドの結びつきとか。 Light Weight Processとか。全然よくわかんない。 英語の文献しかなかったり。日本語の文献みても翻訳おかしかったり。

んでどうやったらGC意識して最適化した起動方法あるかなぁとか思ってきて。 New領域の指定とか。New領域の中でもEdenとFromとToとか。 NewRatioを指定したときと、NewSizeを指定した時はどっちが優先されんの?とか。

これは片手間で調べられないよなぁって。 しかも、いろいろオプション指定しながら動作確認してみないと わかんないし。。 そもそもNew領域のデフォルトサイズはSolaris9だといくつとかも よくわかんなかったり。

ってことでとりあえず業務の人たちには "-server -Xms512m -Xmx512m -XX:NewSize128m -XX:MaxNewSize128m" で実行してくださいってお願いすることにしました。

もし、この辺詳しい人がいたら、、いろいろ教えてください。。。

しかし、このシステムテスト後半の土壇場で。。