• 株式会社サイバード
  • 株式会社サイバード ゲーム事業本部
  • 三浦 克浩

New Relicでパフォーマンスを監視し、ボトルネックを分析。障害対応にも効果的な使い方とは

  • -
  • このエントリーをはてなブックマークに追加
    -
  • tweet

今回のソリューション:【New Relic/ニューレリック】

〜パフォーマンス監視サービスNewRelicを活用し、サービスのボトルネックを特定し障害対応に役立てている事例〜

数々のスマートフォン向けゲームを手掛ける株式会社サイバードは、ゲーム内のある機能のレスポンスが極端に遅くなるケースについて、どこにボトルネックがあるのか分からないという問題を抱えていた。それを解決するため、パフォーマンス監視ツールNew Relicを導入した。

New Relicは無料版でもパフォーマンスの可視化が可能であるが、有料版ではアプリケーションの内部ロジックからデータベースへのクエリ、そしてブラウザ側の数値に至るまで、より詳細な分析が可能となる。

同社のゲーム事業本部で働く三浦 克浩さんはNew Relicの導入により、ボトルネックとなっているレイヤーを突き止め、レスポンスの改善に成功したという。その詳しい活用方法についてお伺いした。

責任をもって自社開発をしたい想いから、サイバードに入社

私は新卒でメーカー系の子会社に入社し、在庫管理システムや商品マスタ管理システムの開発をしていました。そこでネットワークからアプリケーションまで、一通りのことを学びましたね。

その会社で5年ほど務めたのですが、iモードの普及で携帯でWebが見れるようになったことに衝撃を受けたんですよ。そこで私もその世界に入りたいなと思って、Webの開発会社に転職しました。

三浦 克浩さん

その開発会社でも長いこと働いたのですが、だんだんとマネージャー職に近くなってしまって。また、BtoBの仕事はそれはそれで面白みがあったのですが、どこかで「お客さんに言われたものを作ればいいや」という甘えが出てしまう所があると感じたんです。

それよりは自分のコンテンツに責任をもって、より現場に近い所で仕事がしたいなと思ってサイバードに入社しました。今はゲーム事業本部で全体の技術統括をしています。

ボトルネック可視化のため、New Relicを導入

弊社では、2年ほど前から、アプリケーションの監視ツール「New Relic」を導入しています。小さかった組織が徐々に大きくなっていき、自分が見ていないコンテンツが増えてきたことで、障害の原因究明に時間を取られるようになっていました。

例えば、ユーザーがアバターを生成するときにレスポンスが極端に遅くなる、という問題がありました。しかし、どこがボトルネックになっているのか分からなかったんです。データベースから情報を引っ張ってくるところなのか、画像を合成しているところなのか、合成した画像をディスクに書き込んでいるところなのか。

いくつも原因は考えられましたが、原因究明が困難であったため、イベント開始前に画像サーバーを50台くらい増やすという暫定対応で乗り切っていました。

そういった問題を根本的に解決するため、いくつかのプロファイリングツールを比較し、より原因究明に役立ちそうなNew Relicを導入しました。

レイヤーごとにパフォーマンスを可視化、ボトルネックの発見に

New Relicは今では弊社の全てのコンテンツに導入しています。安定しているサービスには無料版を使い、より詳しく見たいサービスは有料版にするという形で使い分けています。New Relicは、Apdexという指標の閾値を下回ったらアラートを出すようになっています。

Apdexは言わばユーザー満足度を表す指標で、リクエスト全体の中で、許容できる時間内にどれだけがレスポンスを返しているのかというものです。デフォルトではこれが0.85以下、つまり15%のリクエストが許容できない速度になるとアラートが上がるようになっています。

▼Apdexも管理

New Relic

アラートが上がると、まずはURLごとのレスポンスタイムを確認し、原因となるURLを特定します。その後、具体的にどのレイヤの動作が遅くなっているのかを突き止めます。PHPのアプリケーション、データベースへのクエリ、外部サービスのAPI呼び出しなど、レイヤごとに色分けしてグラフを表示してくれます。

▼どのレイヤーの動作が遅くなっているかが色分けで分かる

New Relic

例えば、外部サービスの呼び出しに2秒近くかかってしまったら、それ以外の処理を1秒以内で終えても結果としてはレスポンスタイムは3秒になってしまいますよね。そういう風にしてボトルネックを見つけるようにしています。

アプリケーションの数字も取れる数少ないツール

New Relicを導入した結果、アバター生成に時間がかかる問題は、ディスクへの書き込みが一番のボトルネックだったことが判明しました。なので出来るだけ画像の書き込みを減らすよう、一度作った画像をキャッシュして、ユーザー間で共有するという仕組みに変えることで改善されました。

レスポンス速度を見る上では無料プランでも問題ないですが、弊社では有料ライセンスも9つほど利用しています。有料版だと、PHPのロジック部分まで解析できるんですよ。

「trace details」という機能があって、PHPの関数単位でどれだけ時間がかかっているのかが分かります。開発中に計測できるツールはいくつかあるのですが、本番環境で計測できるというのは嬉しいですね。

▼PHPのメソッド単位で問題が把握できる

New Relic

実は、New Relicはブラウザ側の数字も取れるんですよ。サーバーサイドの計測値だけでなく、最終的にブラウザで描画されるまでにどれだけ時間がかかったのか分かります。

Webアプリーケーションとしての速度は問題なくても、ネットワークの転送速度が遅くて描画に時間がかかっているケースにも役立ちます。

障害対応だけでなく、日々の改善活動にも

なにかしらのWebサービスを開発している会社であれば、ほとんどの会社で有効に使えると思います。アプリケーション内部の処理にどれだけ時間がかかっているか、データベースにどんなクエリを発行しているかという情報があるだけで、障害対応のスピードは全然違いますね。

大きな障害だけでなく、Apdexの値で小さなレスポンス速度の変化にも気付けるようになったので、普段からの改善にも上手く活用できるなと感じています。(了)

  • -
  • このエントリーをはてなブックマークに追加
    -
  • tweet