Webシステムを公開する前には負荷テストを実施し、システムの限界を見極めておくことが重要となります。そのうえで、日々の状況を注視し、将来的なトランザクション流入数予測、システム負荷予測、システム拡張などを計画することが一般的です。

 しかし、アプリケーションはビジネス要求に応じて常に変化する「生き物」であり、機能の追加/削除が継続的に行われます。つまり、公開前に測定した「システムの限界点」は、厳密にはアプリケーションの変更のたびに変動していると言えます。

課題

 アプリケーション変更によるシステムの限界点の推移を、どう把握すればよいでしょうか。

 サービス公開前であればサービスごと流入割合を想定し、平常時、ピーク時などのシナリオごとに負荷テストを行えます。しかし、アプリケーション変更のたびに同じテストを繰り返すのは現実的ではありません。

 とはいえ、アプリケーションのCPUを使用する度合いが想定以上に高まっていた場合、システム運用上エラー検知までは至らなくとも、公開前に定めた「システムの限界点」が低下している状態で運用を続けることとなります。

 これはつまり、想定していた限界を下回るトランザクション量でシステム限界を超えてしまうということにもつながりかねません。どのような負荷状況でシステムが稼動しているのかを理解したうえで、対応が必要なのかどうかを判断することが必要と言えます。

統計解析での解決

 これを検知するには、「1トランザクションを処理するのに必要なCPU使用率」をサーバーごと、アプリケーションごとに測定、モデル化し、その推移を確認していくことで、システム限界を動的に予測する方法が考えられます(図1)。

図1●アプリケーション負荷強度確認
図1●アプリケーション負荷強度確認
[画像のクリックで拡大表示]

 前回紹介した「ロードバランス状況監視」により、サービスを構成するクラスタノード間での不均衡が無いことは確認できます。そのため、アプリケーション負荷強度の確認はクラスターごとに選択した代表ノードに対して行えば十分です。特に、アプリケーション入れ換えや計画停止を実施した前後の期間に注視する形で分析します。

 ここでは、システムにおけるCPU使用率はトランザクション量に対して正の相関を持っていることを事前調査で確認済みです。この前提で、サービスごとにトランザクション流入数を説明変数、CPU使用率を従属変数とした回帰分析を行います。

 そして導かれた回帰モデルの説明変数ごとの回帰係数を「現在のアプリケーションがCPUに依存する強さ」とみなします。

 ここで「正の相関」「説明変数」「回帰係数」など耳慣れない用語が出てきたと感じている方は、下記のような数式(回帰モデル)の計算と捉えるとイメージしやすいのではないでしょうか。 

 [CPU使用率]
 = [OSなどが使用しているCPU利用率]+[1トランザクションを処理するのに必要なCPU使用率]×[トランザクション流入量]

 回帰分析とは、変動する2種類の値(ここでは「CPU使用率」と「トランザクション流入量」のことです)の関係を数式として表す分析です。「1トランザクションを処理するのに必要なCPU使用率」は回帰モデルにおいて回帰係数と呼ばれます。

 この回帰係数を観察することで、単純にCPU使用率をグラフ化してシステムリソースの余力を判断するのではなく、システム限界点がどのように推移しているのかを数値として判断できることになります。