9月18日、東京都千代田区のソラシティ カンファレンスセンターにおいてITシステムのパフォーマンス改善をテーマにしたセミナー『Application Performance 2013』が開催された。

日本コンピュウェア APM事業部 営業技術部 ソリューションコンサルタントの矢落 亮一氏

同セミナーでは、各分野のエキスパートによる9つのセッションを開催。成功事例に基づく運用ノウハウや、仮想化を前提にしたインフラ設計の留意点、さらには監視/チューニングのポイントまで、パフォーマンスにまつわるさまざまなトピックスが披露された。

本稿では、同セミナーの中から、Webアプリケーションのボトルネックについて典型パターンを解説した日本コンピュウェア 矢落亮一氏の講演をピックアップし、その様子をお伝えしよう。

パフォーマンスボトルネックTOP 20 + 1

『今、何がアプリケーションを遅くしているのか? ~最新のパフォーマンス分析手法が捉えたボトルネックの実態~』というタイトルが掲げられた矢落氏のセッションでは、幾多の企業の性能問題を解決してきた日本コンピュウェアのナレッジを披露するかたちで、今回はWebアプリケーションにおける主要なボトルネックにフォーカスし、その対策が解説された。

今回の講演のベースとなっているのは、同社が提供するパフォーマンス管理ツール「dynaTrace」。同ツールには、Webブラウザやスマートフォンアプリからネットワーク、Webサーバ/DBサーバの処理時間まで一気通貫でパフォーマンスをモニタリングできるという特徴があり、個別に計測していてはわからないパフォーマンス問題を洗い出すことが可能だ。

コンピュウェアでは、そのツールを使って獲得してきた知見を「パフォーマンスボトルネックTOP 20」というかたちでまとめている。今回の講演では、そのパフォーマンスボトルネックTOP 20を「個人的に頻出問題と感じている"デバッグコードの消し忘れ"を加えた『TOP 20 +1』」(矢落氏)としてカスタマイズ。そのうえで、特にありがちな問題が4つピックアップされて、詳細が解説された。

パフォーマンスボトルネックTOP 20 + 1。パフォーマンスチューニングを施すうえで大変参考になる

矢落氏が講演の中でピックアップした問題は次の4つ。

  • ブラウザパフォーマンス
  • 遅いサードパーティーサービス
  • 多すぎるDBコール
  • 処理停止に至る不適切な同期

以下、簡単に紹介していこう。

大量のJavaScriptファイル、ブラウザキャッシュの設定に注意

最初に取り上げられた問題は「ブラウザパフォーマンス」である。矢落氏は「重要にも関わらず、サーバ側ばかりが優先され、後回しにされる傾向がある」と選抜した理由を説明。Webアプリケーション開発者に対して意識改革を求めた。

この問題のうち、特によくあるポイントが、キャッシュ設定とJavaScriptの読み込みだという。

ブラウザキャッシュに関しては、設定漏れなどで無効化されていた結果、ページ読み込みの度にすべての素材を読み込み直すかたちになり、遅延が発生しているケースが少なくないという。

JavaScriptに関しては、「ファイル数は少ないほどよいが、1ページ当たり40を超えるJavaScriptファイルが使われているケースも珍しくない」(矢落氏)とし、1機能で1ファイルというかたちでJavaScriptファイルが細切れになっているのであれば、それをまとめるだけでもパフォーマンスが向上する可能性があると対策を紹介した。

なお、矢落氏はパフォーマンス評価の注意事項として、「ユーザー体感」の観点で実施することが重要と補足。「サーバプログラムの処理速度だけでパフォーマンスを評価する企業が多いが、JavaScriptの読み込みなどに要する時間もバカにならない」(矢落氏)と話し、「Chrome DevToolsやFirebug、弊社で提供する『dynaTrace AJAX Edition』など、無償のツールも多数提供されているので、それを有効に活用してほしい」(矢落氏)と続けた。

ブラウザパフォーマンスを測る主な指標。Webアプリケーション開発者は、サーバのパフォーマンスしか計測しないケースが多い