Java/.NET Performance Monitoring, Analysis, Diagnostics & Profiling - Application Performance Management

Andreas Grabner氏がHow to Speed Up sites like vancouver2010.com by more than 50% in 5 minutes Performanceにおいて、dynaTrace AJAX Editionを使ってWebページやWebサイトのボトルネックを分析するための一般的な方法を紹介している。ここ数カ月の間、dynaTrace AJAX Editionのユーザから分析に関する取り合わせを受け、その内容を整理することで一般的に利用できるアプローチを得ることができたと説明がある。

How to Speed Up sites like vancouver2010.com by more than 50% in 5 minutes Performanceでは次の操作をdynaTrace AJAX Editionでキャプチャし、問題を特定するというシナリオで適用例を紹介している。第21回オリンピック冬季競技大会(バンクーバーオリンピック)のサイトにアクセスして競技結果をチェックするというストーリーだ。

  1. http://vancouver2010.comを閲覧
  2. Alpine skiingをクリック
  3. Schedules & Resultsをクリック
  4. results of the February 17th race をクリック

紹介されている5つの分析ステップは次のとおり。

  1. dynaTrace AJAX Sessionでレコーディングを実施。この際、設定ダイアログで「Capture arguments」を有効にしておくこと。
  2. どのページがどの項目(通信時間、JavaScript処理、レンダリング時間、ページ読み込み時間)でボトルネックを抱えているかをチェック
  3. 遅いページのタイムラインを分析
  4. 特に時間がかかっている部分を掘り下げ、ネックになっているCSSセレクタを特定
  5. 特に時間がかかっている部分を掘り下げ、ネックになっているネットワーク通信を特定

紹介されているシナリオでは、たとえば大量の画像のダウンロードに多くの時間がかかっていることから、ドメインをもう1つ用意し、画像を並列してダウンロードできるようにすれば読み込み時間が50%短縮されるといった例が紹介されている。

紹介されたシナリオではCSSセレクタの処理に時間がかかるパターンと、ネットワークリクエストに時間がかかっているパターンが取り上げられているが、これ以外にもサードパーティJavaScriptライブラリにパフォーマンスネックがあるケース、多すぎるXmlHttpRequestsリクエストと遅いレスポンスが原因になっているケースなども紹介されている。紹介されているシナリオはdynaTrace AJAX Editionを使ったパフォーマンス分析になっているが、汎用的な分析手法としても参考になる。