VELTRAの応答時間を半減させた手法まとめ 第一回:プロファイリング

イワモトです。2018年1月から、VELTRA のパフォーマンス改善に取り組んでいます。4月11日に加えたソースコードの変更が効果的で、取り組み開始時点にくらべ、平均応答時間が約2分の1となりました。この期間、どのような取り組みをおこなってきたのか、何回かに分けてご紹介します。

冒頭の画像は、すべてのWebトランザクションの平均応答時間の推移をあらわすグラフです。管理画面などの重い処理も含まれているので、数値は目安だとご理解ください。

まずは計測

VELTRA の成長とともに、おかげさまで、扱うデータ量やアクセス数が増えてきました。今後も安定したサービスをご提供できるよう、アプリケーションのパフォーマンスを計測し、改善すべき点を改善するのが、ぼくの現在のミッションです。

そこで、まずはパフォーマンス計測のため、New Relic を導入しました。以前、別の企業でパフォーマンス改善に取り組んだ際に、便利さを実感していたためです。無料で始められるので、まだ使ったことのない方は、ぜひ試すことをお勧めします。

New Relic のダッシュボード画面には、記事冒頭の画像のようなグラフが表示されます。このように、どの処理に時間がかかっているのかが一目で分かるのです。

1月のグラフが右肩上がりになっているのは、計測データが集まり始めたからです。「1月は速かった」というわけではありません。

グラフを見ると、水色と濃い黄色の部分、すなわち PHP と Memcached の処理に時間がかかっています。キャッシュデータの参照にここまで時間がかかるのは不自然なので、最初に改善すべきは Memcached の使い方でしょう。これで最初のターゲットが定まりました。

次回は、Memcached の使い方にどのような問題点があったのかをご紹介します。