きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

今日の失敗

性能で相談を受けて頑張ったけど、


人に任せると切り分けたいとこが、
しっかりと切り分けられないな。
もっと直し方を指導すればよかった。


かなりの量のレコードを検索して、
Javaのオブジェクトにしてるもんだから、
一気にヒープを使うがゆえに、
全件がオブジェクトになりきった後の
FullGCの後との差を見ると、700MBも増えている。ピーク時とSQL発行前との差は1GB。
その検索の部分のみの時間に占めるFullGCの割合はおよそ半分。
ちなみにAWRを見せてもらって、SQLそのものは瞬殺なのは確認出来てる。


後続のファイル出力が全件渡ってくる想定で、
インターフェースが合わないから困った。


ここは頑張って全部を直すよりも、
まずはResultSetをイテレートしていくように直して、
全レコードをオブジェクトにしきって、
例外を投げさせておけば良かった。


無理に頑張って直そうとしてNullPointerExceptionになったから、SQL周辺のオブジェクト化コストが、FullGCが起こりにくい構造にした際にどの程度減るのか確認出来なかった。



まだまだ青いな。


念のため、最後にFWのバージョンを確かめたら、古いので動いてたやがった。かなりショックだ。
そんなんじゃ切り分けにならないじゃん。
そんなことは言わずもがなでしょ。


急いでるくせに土日は働かないってのが僕は気になる。本当にどうにかしたいなら働かないと解決しないさ。。。
俺は構わないよ、矢面に立ってるわけじゃないし。