なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

VisualVMが使ってみるとけっこうよかった件

visualvm.github.io

仕事で負荷試験などを行ったのだが、ボトルネックがどこであるか非常にわかりやすい。

ボトルネックの見つけ方

  • ローカル環境 or JMXのポートを開けた環境でアプリケーションを起動する
  • VisualVMで対象のアプリケーションの環境につなぐ
  • サンプラー or プロファイラを起動しておく
  • アプリケーションに対して負荷をかけたりリクエストをやる
  • サンプラー or プロファイラを見て分析する

VisualVMでできること

  • WEBアプリケーションのスレッドごと、コールスタックごとのCPU処理時間算出
  • WEBアプリケーションのSQLクエリの呼び出し回数とコールスタックと処理時間算出
コールスタック
  • コールスタックとは関数の呼び出し履歴をツリー形式で見ることができるようにしたもので、どの関数でどのくらい時間がかかっているかとてもわかりやすい
気付きなど
  • 意外にJavaのロジックで重そうであっても時間がかからない(レコードが10万程度にならないと繰り返し処理で問題が出ることはない)
  • DBの呼び出しをできるだけへらすことがパフォーマンス向上につながる
  • そういう意味ではキャッシュの実装もパフォーマンス向上に有効