JP2018136681A - 性能管理プログラム、性能管理方法、および管理装置 - Google Patents
性能管理プログラム、性能管理方法、および管理装置 Download PDFInfo
- Publication number
- JP2018136681A JP2018136681A JP2017030013A JP2017030013A JP2018136681A JP 2018136681 A JP2018136681 A JP 2018136681A JP 2017030013 A JP2017030013 A JP 2017030013A JP 2017030013 A JP2017030013 A JP 2017030013A JP 2018136681 A JP2018136681 A JP 2018136681A
- Authority
- JP
- Japan
- Prior art keywords
- performance
- factor
- service
- server
- container
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】性能悪化要因の処理を特定できるようにする。【解決手段】管理装置10は、複数の処理を連携させることで提供されるサービス1の性能を示す性能情報が、サービス1に求められる性能を示す性能要件を満たしているか否かを判断する。性能情報が性能要件を満たしていない場合、管理装置10は、直近の所定期間における複数の処理それぞれの動作状態を示す第1状態情報を取得する。さらに管理装置10は、サービス1の性能が性能要件を満たしているときの複数の処理それぞれの動作状態を示す第2状態情報11aと、第1状態情報とに基づいて、性能要件が満たされているときと満たされてないときとの動作状態の差を、複数の処理それぞれについて計算する。そして管理装置10は、複数の処理それぞれの動作状態の差に基づいて、サービス1の性能悪化要因となっている処理を判定する。【選択図】図1
Description
本発明は、性能管理プログラム、性能管理方法、および管理装置に関する。
クラウドコンピューティング技術により、ユーザが望む量のコンピュータリソースをネットワーク経由でユーザに提供することが容易となっている。クラウドコンピューティングのなかには、例えばアプリケーションソフトウェア(以下、アプリケーションと呼ぶ)を稼働させるためのプラットフォームの利用環境を、ネットワークを介してユーザに提供するPaaS(Platform as a Service)がある。
PaaSを利用したサービスは、例えばマイクロサービスアーキテクチャと呼ばれる技術思想に基づいて構築することができる。マイクロサービスアーキテクチャでは、1つのサービスを提供するソフトウェアが、コンポーネントと呼ばれる複数の小さなアプリケーションに分割して作成される。複数のコンポーネントを組み合わせて1つのサービスを提供することによって、処理能力の増強を、コンポーネント単位で実施することができる。これにより、あるコンポーネントの処理負荷が過大となった場合、そのコンポーネントについて処理能力の増強を行えばよく、他のコンポーネントは変更せずにすむ。
コンポーネントの実行単位はコンテナと呼ばれる。コンポーネントの処理能力を増強する場合、管理者は、例えば増強対象のコンポーネント用のコンテナ数を増加(スケールアウト)させる。コンテナ数の増減でサービスの性能調整ができることにより、システムのリソースを効率的に利用することができる。このようなコンテナを利用したPaaSシステムは、Container-based PaaS Platformと呼ばれる。
リソース利用の効率化に関する技術としては、例えば状況変化に対応して、リソースの利用効率を高めることができるリソース管理システムがある。またコンポーネントの管理に関する技術としては、例えばアプリケーションプログラムのコンポーネントの生産性を損なうことなく当該コンポーネントの監視および監視結果にもとづいた処理を行なう技術がある。
クラウドコンピューティングシステムの管理者は、サービスの品質が保てるように、サービスを実現するコンポーネントの性能を適宜調整する。例えば管理者は、性能要件として、サービスを提供する際のレイテンシの最大値を定め、サービスのレイテンシが最大値を超えた場合、そのサービスの提供に利用しているコンポーネントを実行する処理能力を増強することとなる。
しかし、サービスのレイテンシが最大値を超えたというだけでは、性能要件を満たさなくなったサービスで利用している複数のコンポーネントのうち、どのコンポーネントに性能悪化の要因あるのかが分からない。特にPaaSでは、PaaSの利用者がコンポーネントを作成しており、システムの管理者は、コンポーネントの具体的な処理内容を知ることができない。そのためシステムの管理者が、性能悪化の要因となっているコンポーネントを適確に特定するのは困難である。
なお、性能悪化の要因となっている処理の特定が難しいという問題は、マイクロサービスアーキテクチャに準じて作成されたサービスに限らず、複数の処理を連携させることで提供されるサービスの性能を調整する場合に同様に生じる問題である。
1つの側面では、本件は、性能悪化要因の処理を特定できるようにすることを目的とする。
1つの案では、コンピュータに以下の処理を実行させる性能管理プログラムが提供される。
性能管理プログラムに基づいて、コンピュータは、複数の処理を連携させることで提供されるサービスの性能を示す性能情報を取得する。次にコンピュータは、性能情報が、サービスに求められる性能を示す性能要件を満たしているか否かを判断する。次にコンピュータは、性能情報が性能要件を満たしていない場合、直近の所定期間における複数の処理それぞれの動作状態を示す第1状態情報を取得する。次にコンピュータは、サービスの性能が性能要件を満たしているときの複数の処理それぞれの動作状態を示す第2状態情報と、第1状態情報とに基づいて、性能要件が満たされているときと満たされてないときとの動作状態の差を、複数の処理それぞれについて計算する。そしてコンピュータは、複数の処理それぞれの動作状態の差に基づいて、サービスの性能悪化要因となっている処理を判定する。
性能管理プログラムに基づいて、コンピュータは、複数の処理を連携させることで提供されるサービスの性能を示す性能情報を取得する。次にコンピュータは、性能情報が、サービスに求められる性能を示す性能要件を満たしているか否かを判断する。次にコンピュータは、性能情報が性能要件を満たしていない場合、直近の所定期間における複数の処理それぞれの動作状態を示す第1状態情報を取得する。次にコンピュータは、サービスの性能が性能要件を満たしているときの複数の処理それぞれの動作状態を示す第2状態情報と、第1状態情報とに基づいて、性能要件が満たされているときと満たされてないときとの動作状態の差を、複数の処理それぞれについて計算する。そしてコンピュータは、複数の処理それぞれの動作状態の差に基づいて、サービスの性能悪化要因となっている処理を判定する。
1態様によれば、性能悪化要因の処理を特定できる。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
〔第1の実施の形態〕
まず、第1の実施の形態について説明する。
図1は、第1の実施の形態に係るシステムの構成例を示す図である。複数の処理(「処理a」、「処理b」、「処理c」)を連携して動作させることで提供されるサービス1が、複数のサーバ2〜4に実装されている。例えばサーバ2では「処理a」が実行され、サーバ3では「処理c」が実行され、サーバ4では「処理b」が実行されている。
例えば端末装置5からのサービス1のリクエストがサーバ2に入力される。するとサーバ2が「処理a」を実行する。サーバ2は、「処理a」の実行過程で、サーバ4に対して「処理b」の処理要求を送信する。するとサーバ4が「処理b」を実行する。サーバ4は、「処理b」の実行過程で、サーバ3に対して「処理c」の処理要求を送信する。するとサーバ3が「処理c」を実行する。サーバ3は、「処理c」の処理結果をサーバ4に送信する。サーバ4は、「処理c」の処理結果を用いて「処理b」の処理を実行し、「処理b」の処理結果をサーバ2に送信する。サーバ2は、「処理b」の処理結果を用いて「処理a」の処理を実行し、「処理a」の処理結果を、端末装置5からのリクエストに対するレスポンスとして端末装置5に送信する。
管理装置10は、サーバ2〜4で提供されているサービス1を管理する。例えば管理装置10は、サービス1の性能調整を行う。具体的には、管理装置10は、サービス1の性能が悪化した場合、サービス1の性能悪化要因となる処理を特定する。そして管理装置10は、性能悪化が解消するように、サーバ2〜4に実行させる処理を制御する。
ここで、サービス1の性能悪化要因となる処理を特定することの困難性について説明する。図1に示すように、複数の処理を連携させることで提供されるサービス1の場合、サービス1の性能が悪化したというだけでは、どのコンポーネントに性能悪化の要因があるのかが分からない。
そこでコンポーネントごとに性能要件を定めることが考えられる。しかしながら、各コンポーネントにどのような性能要件を定めれば、サービスの性能要件を満たすことが可能なのかを、的確に判断するのは困難である。例えばサービスのレイテンシを100ミリ秒以内にするために,コンポーネントごとのCPU(Central Processing Unit)使用率、メモリ使用率、ディスクI/Oレートなどの値がいくつであれば適当なのかを、正確に決定することは困難である。しかも、サービスの利用者が作成したコンポーネントの場合、管理者は、コンポーネントの具体的な処理内容を知ることができない。コンポーネントの処理内容を知らずに、そのコンポーネントの性能要件を定めるのは困難である。
そこで管理装置10により、各サーバ2〜4での処理の動作状態に基づいて、性能悪化要因となる処理を適確に特定する性能管理方法を実現する。そのために、管理装置10は、以下のような記憶部11と処理部12とを有する。記憶部11は、例えば管理装置10が有するメモリまたはストレージ装置である。処理部12は、例えば管理装置10が有する1または複数のプロセッサである。処理部12が実行する処理は、例えばその処理の手順が記述された性能管理プログラムをプロセッサに実行させることで実現できる。
記憶部11は、複数の処理を連携させることで提供されるサービス1の性能が、サービス1に求められる性能を示す性能要件を満たしているときの、複数の処理それぞれの動作状態を示す第2状態情報11aを記憶する。第2状態情報11aは、例えば、各処理のCPU使用率、各処理実行時のメモリI/Oレートなどの複数種の情報である。このような動作状態を示す情報は、メトリックと呼ばれる。なお、記憶部11は、各種メトリックの統計処理を施した結果の値を、第2状態情報11aとして記憶していてもよい。例えば処理ごとのCPU使用率のパーセンタイル値を、第2状態情報11aとすることもできる。
処理部12は、サービス1の性能を示す性能情報を取得する。例えば処理部12は、端末装置5とサーバ2との間の通信を監視し、リクエストからレスポンスまでの時間(レイテンシ)を取得する。処理部12は、例えば複数のリクエストに対するレイテンシに基づいて、Apdexなどの性能の指標値を算出する。Apdexについて後述する。
処理部12は、取得した性能情報が、性能要件を満たしているか否かを判断する。例えば性能要件として、Apdexが0.8以上であることが指定されているものとする。この場合、処理部12は、取得した性能情報に基づいて算出したApdex値が、0.8以上か否かを判断する。
処理部12は、性能情報が性能要件を満たしていない場合、サーバ2〜4から、直近の所定期間における複数の処理それぞれの動作状態を示す第1状態情報を取得する。例えば処理部12は、各処理のCPU使用率、各処理実行時のメモリI/Oレートなどのメトリックの値を取得する。
処理部12は、取得した第1状態情報と第2状態情報11aとに基づいて、性能要件が満たされているときと満たされてないときとの動作状態の差を、複数の処理それぞれについて計算する。例えば処理部12は、取得した第1状態情報に基づいて、直近の所定期間のメトリックの値の代表値(例えばパーセンタイル値)を計算する。そして処理部12は、第1状態情報から算出した代表値を第2状態情報11aから算出した代表値との差を計算する。
そして処理部12は、複数の処理それぞれの動作状態の差に基づいて、サービス1の性能悪化要因となっている処理を判定する。例えば、処理部12は、動作状態の差が最も大きな処理を、性能悪化要因の処理と判定する。
処理部12は、さらに性能悪化要因と判定された要因処理の動作状態の差に基づいて、性能悪化に対する対処方法を決定し、決定した対処方法による対処を実施する。例えば処理部12は、要因処理のスケールアウトを行う。
このようにして、サービス1の提供に使用する処理のうち、その処理が性能悪化要因となっているのかを、判定することができる。その結果、サービス1の性能悪化に対して、迅速に対処することができる。また、各処理について、メトリックごとの性能要件を設定するといった手間が不要となり、システムの管理負担が軽減される。
なお、処理部12は、第2状態情報11aを、適宜更新することで、第2状態情報11aの精度を向上させることもできる。例えば処理部12は、サービス1の性能情報が性能要件を満たしている場合、直近の所定期間における複数の処理それぞれの動作状態を示す第3状態情報を取得する。そして処理部12は、取得した第3状態情報に基づいて、第2状態情報11aを更新する。例えば処理部12は、複数の期間の第3状態情報に基づき、現在に近い期間の第3状態情報に示される動作状態ほど、更新後の第2状態情報11aに強く反映させる。このように、最新の性能情報によって第2状態情報11aを更新すると共に、新しい更新情報の重みを重くして第2状態情報11aを更新することで、システムの最近の運用状況を反映させた精度の高い第2状態情報11aを生成することができる。
記憶部11は、第2状態情報11aとして、例えばサービス1の性能が性能要件を満たしているときに複数の処理それぞれが使用しているリソースの稼働状況の時系列変化を示す第2リソース情報の所定の代表値である第2代表値を記憶してもよい。この場合、処理部12は、第1状態情報として、直近の所定期間に複数の処理それぞれが使用しているリソースの稼働状況の時系列変化を示す第1リソース情報を取得し、第1リソース情報の所定の代表値を、第1代表値として算出する。そして処理部12は、複数の処理それぞれについて、第1代表値と第2代表値との差を計算し、差が最も大きい処理を、性能悪化の要因である要因処理であると判定する。このようにリソースの稼働状況を代表値で表すことで、動作状態の差を容易に数値化することができる。その結果、リソース1の性能悪化の前後で動作状態が大きく変化した処理を、容易に特定することができる。
なお、第1状態情報および第2状態情報11aとして、複数種メトリック(CPU使用率、メモリI/Oレートなど)の値を取得している場合、処理部12は、メトリック種別ごとに代表値の差を計算する。また処理部12は、1種のメトリックについて複数種の代表値(例えば50パーセンタイル、90パーセンタイル、99パーセンタイルなど)を算出することもできる。この場合、処理部12は、各処理について、第1状態情報と第2状態情報11aとの同種のメトリックの同種の代表値間の差を計算する。そして処理部12は、各処理のメトリック種別(例えばCPU使用率)ごとに、代表値間の差(例えば絶対値)を合計し、対応する処理の該当メトリック種別に関する動作状態の差とする。また処理部12は、性能悪化時に値が増加した代表値の差(第2の実施の形態では「正の要因度」と呼ぶ)と、性能悪化時に値が減少した代表値の差(第2の実施の形態では「負の要因度」と呼ぶ)とを個別に算出してもよい。
処理部12は、サービス1の性能悪化に対する対処方法としては、例えば要因処理のスケールアウトを行うことができる。また処理部12は、要因処理を現在実行しているサーバにおける、要因処理以外の処理の影響でサービス1の性能が悪化している場合、要因処理を実行するサーバを変更することもできる。例えば処理部12は、要因処理の第2状態情報11a(性能悪化時の状態情報)の方が、要因処理の第1状態情報(正常時の状態情報)よりも負荷が大きい動作状態を表している場合、要因処理のスケールアウトを行う。また処理部12は、要因処理の第1状態情報の方が、要因処理の第2状態情報11aよりも負荷が大きい動作状態を表している場合、要因処理を実行するサーバを変更する。これにより、無駄なスケールアウトの実行を抑止することができる。
さらに処理部12は、要因処理の変更とスケールアウトとを同時の行った後、スケールアウトが余分であることを確認できたとき、スケールインを実施してもよい。例えば処理部12は、まず、要因処理を現在実行している第1サーバでの要因処理の実行を停止し、第1サーバとは異なる複数の第2サーバそれぞれで要因処理を実行させる。そして処理部12は、対処実施後の複数の第2サーバが要因処理を実行するための処理負荷が、所定値以下の場合、複数の第2サーバの一部における要因処理の実行を停止させる。これにより、サービス1の性能悪化状態を迅速に解消し、かつ無駄なリソースの消費を抑制することができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、マイクロサービスアーキテクチャに基づいて構築されたPaaSの運用管理を行う際に、サービスのレイテンシが最大値を超えたとき、負荷が過大となったコンポーネントを的確に判断できるコンピュータシステムである。
次に第2の実施の形態について説明する。第2の実施の形態は、マイクロサービスアーキテクチャに基づいて構築されたPaaSの運用管理を行う際に、サービスのレイテンシが最大値を超えたとき、負荷が過大となったコンポーネントを的確に判断できるコンピュータシステムである。
図2は、第2の実施の形態のシステム構成例を示す図である。クラウドコンピューティングシステム40には、ネットワーク20を介して複数の端末装置31,32,・・・が接続されている。クラウドコンピューティングシステム40は、複数の端末装置31,32,・・・に対して、PaaSによるサービスを提供する。
クラウドコンピューティングシステム40には、ゲートウェイ41、管理サーバ100、および複数のサーバ42〜44が含まれる。ゲートウェイ41は、ネットワーク20に接続されており、複数の端末装置31,32,・・・からの要求を受け付ける。管理サーバ100は、ゲートウェイ41と複数のサーバ42〜44とに接続されており、複数のサーバ42〜44を管理する。複数のサーバ42〜44は、複数の端末装置31,32,・・・からの要求に応じて、情報処理のサービスを提供する。
図3は、本実施の形態に用いる管理サーバのハードウェアの一構成例を示す図である。管理サーバ100は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101がプログラムを実行することで実現する機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、管理サーバ100の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、ストレージ装置103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
ストレージ装置103は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置103は、コンピュータの補助記憶装置として使用される。ストレージ装置103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置103としては、例えばHDD(Hard Disk Drive)やSSD(Solid State Drive)を使用することができる。
グラフィック処理装置104には、モニタ21が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ21の画面に表示させる。モニタ21としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード22とマウス23とが接続されている。入力インタフェース105は、キーボード22やマウス23から送られてくる信号をプロセッサ101に送信する。なお、マウス23は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク24に記録されたデータの読み取りを行う。光ディスク24は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク24には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。
機器接続インタフェース107は、管理サーバ100に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置25やメモリリーダライタ26を接続することができる。メモリ装置25は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ26は、メモリカード27へのデータの書き込み、またはメモリカード27からのデータの読み出しを行う装置である。メモリカード27は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク20に接続されている。ネットワークインタフェース108は、ネットワーク20を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第2の実施の形態における管理サーバ100の処理機能を実現することができる。なお、端末装置31,32,・・・、ゲートウェイ41、およびサーバ42〜44も、管理サーバ100と同様のハードウェアによって実現できる。また、第1の実施の形態に示した管理装置10も、図3に示した管理サーバ100と同様のハードウェアにより実現することができる。
管理サーバ100は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。管理サーバ100に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、管理サーバ100に実行させるプログラムをストレージ装置103に格納しておくことができる。プロセッサ101は、ストレージ装置103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。また管理サーバ100に実行させるプログラムを、光ディスク24、メモリ装置25、メモリカード27などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、ストレージ装置103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
なお、第2の実施の形態では、マイクロサービスアーキテクチャに基づいて、サービスを提供するソフトウェアがサーバ42〜44に実装される。
図4は、マイクロサービスアーキテクチャの概念を示す図である。ユーザに提供するサービス50は、複数のコンポーネント51〜53を用いて実現される。例えばコンポーネント51はプレゼンテーション層の処理を実行するソフトウェアであり、コンポーネント52はロジック層の処理を実行するソフトウェアであり、コンポーネント53はデータ層の処理を実行するソフトウェアである。
図4は、マイクロサービスアーキテクチャの概念を示す図である。ユーザに提供するサービス50は、複数のコンポーネント51〜53を用いて実現される。例えばコンポーネント51はプレゼンテーション層の処理を実行するソフトウェアであり、コンポーネント52はロジック層の処理を実行するソフトウェアであり、コンポーネント53はデータ層の処理を実行するソフトウェアである。
コンポーネント51〜53は、複数のサーバ42〜44のいずれか1以上で実行される。コンポーネント51〜53を実行することでサーバ42〜44上に構築される処理機能がコンテナである。第2の実施の形態では、コンテナを「Cxy」と表している。添字の「x」は、そのコンテナを含むコンポーネントの識別番号(コンポーネント番号)である。添字の「y」は、そのコンテナを含むコンポーネント内でのコンテナの識別番号(コンテナ番号)である。
このように、マイクロサービスアーキテクチャでは、一つのサービス50を提供するためのソフトウェアが、複数の小さなコンポーネント51〜53に分割して作成される。各コンポーネント51〜53は疎に結合している。結合が疎であるとは、コンポーネント51〜53同士の結びつきが比較的緩やかであり、独立性が強い状態にあることである。コンポーネント51〜53の結合が疎であることにより、新たなコンポーネントの追加や一部のコンポーネントの拡張による他のコンポーネントの変更が少なくてすむという利点がある。
マイクロサービスアーキテクチャに準じて作成されたサービスのコンポーネント51〜53は、コンテナによって実行される。コンポーネント51〜53とコンテナは1対多の関係にある。
ユーザに提供するサービス50に求められる性能要件は、例えばレイテンシを用いて表すことができる。従って、システムの管理者は、サービス50に求められるレイテンシが得られるような処理能力のコンポーネント51〜53を用意することになる。コンポーネント51〜53の処理能力は、コンポーネント51〜53を実行するコンテナを増やしたり、減らしたりすることで調整することができる。
ここで、サービス50に求められる性能要件を管理者が規定することは容易である。それに対して、サービス50に求められるレイテンシを満たすように、各コンポーネントにどの程度のリソースを割り当てればよいのかを、管理者が判断するのは困難である。そこで第2の実施の形態では、管理サーバ100が、性能が不足しているコンポーネントを検出し、そのコンポーネントを実行するコンテナを追加することで、サービス50に対する性能要件を満たすようなコンポーネントへのリソースの割り当てを実現する。
図5は、性能調整のためにゲートウェイと管理サーバが有する機能を示すブロック図である。ゲートウェイ41は、レイテンシ計測部41aとレイテンシ記憶部41bとを有する。レイテンシ計測部41aは、端末装置31,32,・・・から要求を受信してから、その要求に対応する応答を端末装置31,32,・・・に送信するまでの時間を計測する。レイテンシ計測部41aは、計測した時間を、その要求に応じたサービスについてのレイテンシとして、レイテンシ記憶部41bに格納する。レイテンシ記憶部41bは、レイテンシ計測部41aが計測したレイテンシを記憶する。
管理サーバ100は、サービス情報記憶部110、メトリック情報記憶部120、正常時振る舞い記憶部130、リソース情報記憶部140、および性能調整エンジン150を有する。サービス情報記憶部110は、提供するサービスに関する情報を記憶する。メトリック情報記憶部120は、サーバ42〜44やコンテナによるリソースの稼働状況に関する情報(メトリック)を記憶する。正常時振る舞い記憶部130は、複数のコンテナそれぞれと複数のサーバそれぞれとの正常動作時の振る舞いを示す情報を記憶する。リソース情報記憶部140は、サーバ42〜44の使用リソースに関する情報を記憶する。性能調整エンジン150は、サービス情報記憶部110、メトリック情報記憶部120、正常時振る舞い記憶部130、およびリソース情報記憶部140に記憶された情報を用いて、コンポーネント単位での性能調整を行う。
なお、以下の説明において、コンポーネントの処理を実行するコンテナをサーバに実装することを、コンテナの配置と呼ぶ。コンテナの配置は、具体的には、コンポーネントを実行するためのプログラムをサーバにインストールし、そのプログラムに基づいてコンポーネントの処理を実行するプロセスを起動する処理である。また、コンテナがサーバに実装されているとき、そのコンテナがそのサーバに配置されていると呼ぶ。
図5の例では、各サーバ42〜44には、異なるコンポーネントの複数のコンテナが配置されている。例えばサーバ42には、コンテナC11,C22,C31が配置されている。
以下、図6〜図10を参照して、サービス情報記憶部110、メトリック情報記憶部120、正常時振る舞い記憶部130、およびリソース情報記憶部140が記憶する情報について、詳細に説明する。
以下、図6〜図10を参照して、サービス情報記憶部110、メトリック情報記憶部120、正常時振る舞い記憶部130、およびリソース情報記憶部140が記憶する情報について、詳細に説明する。
図6は、レイテンシ記憶部が記憶する情報の一例を示す図である。レイテンシ記憶部41bは、例えばレイテンシ管理テーブル41cを記憶している。レイテンシ管理テーブル41cは、タイムスタンプ、リクエストID、サービス名、およびレイテンシの欄を有している。
タイムスタンプの欄には、レイテンシを計測した日時が設定される。リクエストIDの欄には、レイテンシを計測した要求の識別情報(リクエストID)が設定される。サービス名の欄には、レイテンシを計測した要求に対応するサービスの名称(サービス名)が設定される。レイテンシの欄には、計測したレイテンシが設定される。
図7は、サービス情報記憶部が記憶する情報の一例を示す図である。サービス情報記憶部110は、例えばサービス管理テーブル111を記憶している。サービス管理テーブル111は、サービス名、Apdex(Application performance index)、Satisfied Time、およびコンポーネント名の欄が設けられている。サービス名の欄には、提供しているサービスの名称(サービス名)が設定される。Apdexの欄には、対応するサービスに求められる性能要件が、Apdexによって設定される。Apdexは、レイテンシについてのユーザの満足度を示す指標である。Satisfied Timeの欄には、対応するサービスを利用するユーザが満足すると思われる最大のレイテンシの値(T)が設定される。コンポーネント名の欄には、サービスの提供に用いられるコンポーネントの名称が設定される。
ここで、Apdexについて詳細に説明する。Apdexは、「The Alliance」によって標準化された指標であり、以下の式によって計算される。
Apdex=((satisfied counts)+(tolerating counts)/2)/(total counts)
「satisfied counts」は、レイテンシがT以下のリクエスト回数である。すなわち「satisfied counts」は、ユーザが満足できるレイテンシが得られたリクエストの回数である。
Apdex=((satisfied counts)+(tolerating counts)/2)/(total counts)
「satisfied counts」は、レイテンシがT以下のリクエスト回数である。すなわち「satisfied counts」は、ユーザが満足できるレイテンシが得られたリクエストの回数である。
「tolerating counts」は、レイテンシがT以上、かつ4×T以下のリクエスト回数である。すなわち「tolerating counts」は、ユーザが満足できるレイテンシではないものの、許容できるレイテンシが得られたリクエストの回数である。
なお、レイテンシが4×Tより大きなリクエスト回数は、「frustrated」と呼ばれる。この「frustrated」は、ユーザが不満に感じるレイテンシとなったリクエストの回数である。
第2の実施の形態では、サービスのレイテンシに基づいて計算したApdexの値が、性能要件として設定されたApdex値以上であれば、性能要件を満たしていると判断される。逆にサービスのレイテンシに基づいて計算したApdexの値が、性能要件として設定されたApdex値未満であれば、性能要件を満たしていないと判断される。
図8は、メトリック情報記憶部が記憶する情報の一例を示す図である。メトリック情報記憶部120は、例えばメトリック管理テーブル121を記憶している。メトリック管理テーブル121は、タイムスタンプ、サーバ/コンテナ名、メトリック種別、および値の欄を有している。タイムスタンプの欄には、メトリックの値を計測した日時が設定される。サーバ/コンテナ名の欄には、メトリックの値を計測したサーバまたはコンテナの名称が設定される。メトリック種別の欄には、計測したメトリックの種別(メトリック種別)が設定される。値の欄には、計測したメトリックの値が設定される。
図9は、正常時振る舞い記憶部が記憶する情報の一例を示す図である。正常時振る舞い記憶部130は、例えば振る舞い測定周期ごとの複数のコンテナ振る舞い管理テーブル131a,131b,・・・と、振る舞い測定周期ごとの複数のサーバ振る舞い管理テーブル132a,132b,・・・とを記憶している。
複数のコンテナ振る舞い管理テーブル131a,131b,・・・は、それぞれコンテナの振る舞いの測定周期に対応付けて設けられている。複数のコンテナ振る舞い管理テーブル131a,131b,・・・は、コンテナ、メトリック種別、パーセンタイル種別、パーセンタイル値、および重み付きパーセンタイル値の欄を有している。コンテナの欄には、振る舞いの測定対象であるコンテナの名称(コンテナ名)が設定される。メトリック種別の欄には、振る舞いを測定したメトリックの種別が設定される。パーセンタイル種別の欄には、メトリックの値について求めるパーセンタイルの種別が設定される。例えば50パーセンタイル、90パーセンタイル、99パーセンタイルなどが、パーセンタイルの種別として設定される。パーセンタイル値の欄には、対応するメトリックについてのパーセンタイルの種別で示されるパーセンタイルの値が設定される。重み付きパーセンタイル値の欄には、過去数周期分のメトリック値に基づく、コンテナのメトリックごとの重み付きパーセンタイル値が設定される。重み付きパーセンタイル値の詳細は、後述する(図15参照)。
複数のサーバ振る舞い管理テーブル132a,132b,・・・は、それぞれサーバの振る舞いの測定周期に対応付けて設けられている。複数のサーバ振る舞い管理テーブル132a,132b,・・・は、サーバ、メトリック種別、パーセンタイル種別、パーセンタイル値、および重み付きパーセンタイル値の欄を有している。サーバの欄には、振る舞いの測定対象であるサーバの名称(サーバ名)が設定される。メトリック種別の欄には、振る舞いを測定したメトリックの種別が設定される。パーセンタイル種別の欄には、メトリックの値について求めるパーセンタイルの種別が設定される。例えば50パーセンタイル、90パーセンタイル、99パーセンタイルなどが、パーセンタイルの種別として設定される。パーセンタイル値の欄には、対応するサーバについてのパーセンタイルの種別で示されるパーセンタイルの値が設定される。重み付きパーセンタイル値の欄には、過去数周期分のメトリック値に基づく、サーバのメトリックごとの重み付きパーセンタイル値が設定される。
なお、パーセンタイルは、統計の代表値の一種である。複数のデータを大きさの順に並べたとき、値x(xは実数)より小さなデータの割合がp%以下(pは0以上100以下の実数)、それより大きなデータの割合が「100−p」%となる値xが、pパーセンタイルである。pパーセンタイルは、第p百分位数とも呼ばれる。
図10は、リソース情報記憶部が記憶する情報の一例を示す図である。リソース情報記憶部140は、例えばコンテナ配置管理テーブル141、サーバリソース管理テーブル142、およびコンテナリソース管理テーブル143を記憶している。
コンテナ配置管理テーブル141は、サーバ42〜44へのコンテナの配置状況を管理するデータテーブルである。コンテナ配置管理テーブル141は、サーバ名とコンテナ名との欄を有している。サーバ名の欄には、コンテナが実装されているサーバの名称(サーバ名)が設定される。コンテナ名の欄には、対応するサーバに実装されているコンテナの名称(コンテナ名)が設定される。
サーバリソース管理テーブル142は、サーバ42〜44のリソースの空き量を管理するデータテーブルである。サーバリソース管理テーブル142は、サーバ名と残余リソース量との欄を有している。サーバ名の欄には、サービスの提供に使用しているサーバの名称(サーバ名)が設定される。残余リソース量の欄には、対応するサーバのリソースの空き量(残余リソース量)が、リソースの種別ごとに設定される。図9の例では、CPU、メモリ、ネットワークの残余リソース量が設定されている。
コンテナリソース管理テーブル143は、各コンポーネントのコンテナが使用するリソースの量を管理するデータテーブルである。コンテナリソース管理テーブル143は、コンポーネントとコンテナ使用リソース量との欄を有している。コンポーネントの欄には、サービスの提供に使用されるコンポーネントの名称(コンポーネント名)が設定される。コンテナ使用リソース量の欄には、対応するコンポーネントのコンテナが使用するリソースの量が、リソースの種別ごとに設定される。図9の例では、CPU、メモリ、ネットワークについてのコンテナの使用リソース量が設定されている。
次に、性能調整エンジン150について詳細に説明する。
図11は、性能調整エンジンの機能を示すブロック図である。性能調整エンジン150は、サービス管理部151、メトリック情報収集部152、レイテンシ検査部153、振る舞い計算部154、異常要因推定部155、およびコンテナ配置制御部156を有する。
図11は、性能調整エンジンの機能を示すブロック図である。性能調整エンジン150は、サービス管理部151、メトリック情報収集部152、レイテンシ検査部153、振る舞い計算部154、異常要因推定部155、およびコンテナ配置制御部156を有する。
サービス管理部151は、サービスの構成や性能要件を管理する。メトリック情報収集部152は、サーバ42〜44からメトリックの値を定期的に収集し、メトリック情報記憶部120に格納する。レイテンシ検査部153は、サービスのレイテンシが性能要件を満たしているか検査する。振る舞い計算部154は、コンテナとサーバとの正常時および異常時の振る舞いを計算する。振る舞い計算部154は、正常時の振る舞いを、正常時振る舞い記憶部130に格納する。異常要因推定部155は、レイテンシが性能要件を満たしていないサービスの異常要因となっているコンポーネント(要因コンポーネント)を推定する。コンテナ配置制御部156は、要因コンポーネントのスケールアウト、または要因コンポーネントを実行するコンテナの配置変更を行う。
なお、図11に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図11に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
次に、性能調整エンジン150における、各サービスが性能要件を満たしているか否かの判定処理について説明する。
図12は、性能要件の判定処理の一例を示す図である。サービス管理部151は、管理者の入力に従って、サービス50の性能要件として、Apdex値をサービス情報記憶部110に登録する。例えばサービス管理部151は、管理者からのApdex値とSatisfied Time(T)との入力を受け付ける。そしてサービス管理部151は、入力されたApdex値とSatisfied Time(T)とを、サービス管理テーブル111に、サービス50のサービス名に対応付けて格納する。
図12は、性能要件の判定処理の一例を示す図である。サービス管理部151は、管理者の入力に従って、サービス50の性能要件として、Apdex値をサービス情報記憶部110に登録する。例えばサービス管理部151は、管理者からのApdex値とSatisfied Time(T)との入力を受け付ける。そしてサービス管理部151は、入力されたApdex値とSatisfied Time(T)とを、サービス管理テーブル111に、サービス50のサービス名に対応付けて格納する。
レイテンシ検査部153は、ゲートウェイ41から定期的に、直近の所定期間内のサービス50へのリクエストに関するレイテンシを収集する。サービスのレイテンシは、端末装置31から発行されたリクエストのゲートウェイ41での受信時刻と、端末装置31へのゲートウェイ41からの応答の送信時刻との差である。レイテンシ検査部153は、取得したレイテンシに基づいて、所定期間におけるApdex値を計算する。そしてレイテンシ検査部153は、計算したApdex値が、性能要件として指定されたApdex値以上であれば、性能要件を満たしていると判断する。またレイテンシ検査部153は、計算したApdex値が、性能要件として指定されたApdex値未満であれば、性能要件を満たしていないと判断する。
次にメトリック情報収集部152によって、コンテナとサーバとのメトリック情報が収集され、メトリック情報記憶部120に格納される。収集されるメトリック情報には、例えばCPUの使用率、メモリのI/Oレートやページフォルト数、ディスク(ファイルシステム)のI/Oレート、ネットワークの送受信レートなどが含まれる。収集されたメトリック情報に基づいて、振る舞い計算部154によって、直近の所定期間におけるコンテナとサーバとの振る舞いが計算される。
図13は、コンテナの振る舞いの計算例を示す図である。図13の例では、コンテナC11の振る舞いを計算するものとする。振る舞い計算部154は、メトリック情報記憶部120から、コンテナ名が「C11」であるレコードを抽出する。次に振る舞い計算部154は、抽出したレコードをメトリック種別で分類する。次に振る舞い計算部154は、同じメトリック種別のレコードに設定されている値(メトリック値)が0〜100となるように正規化し、度数分布を生成する。例えば振る舞い計算部154は、各メトリック値の理論上の最大値が「100」となるように正規化する。そして振る舞い計算部154は、度数分布に基づいて、メトリック種別ごとに、50パーセンタイル値、90パーセンタイル値、および99パーセンタイル値を計算する。
振る舞い計算部154は、サービス50のコンポーネントを実行するすべてのコンテナの振る舞いを計算する。そして、レイテンシ検査部153によってサービス50の性能要件が満たされていると判断されている場合、振る舞い計算部154は、直近の周期のコンテナ振る舞い管理テーブル131aを作成し、そのコンテナ振る舞い管理テーブル131aを正常時振る舞い記憶部130に格納する。
図14は、サーバの振る舞いの計算例を示す図である。図14の例では、サーバ名「サーバ1」のサーバ42の振る舞いを計算するものとする。振る舞い計算部154は、メトリック情報記憶部120から、サーバ名が「サーバ1」であるレコードを抽出する。次に振る舞い計算部154は、抽出したレコードをメトリック種別で分類する。次に振る舞い計算部154は、同じメトリック種別のレコードに設定されている値(メトリック値)が0〜100となるように正規化し、度数分布を生成する。そして振る舞い計算部154は、度数分布に基づいて、メトリック種別ごとに、50パーセンタイル値、90パーセンタイル値、および99パーセンタイル値を計算する。
振る舞い計算部154は、すべてのサーバ42〜44の振る舞いを計算する。そして、レイテンシ検査部153によってサービス50の性能要件が満たされていると判断されている場合、振る舞い計算部154は、直近の周期のサーバ振る舞い管理テーブル132aを作成し、そのサーバ振る舞い管理テーブル132aを正常時振る舞い記憶部130に格納する。
レイテンシ検査部153によってサービス50の性能要件が満たされてないと判断された場合、振る舞い計算部154は、計算したコンテナとサーバとのパーセンタイル値を、異常時の振る舞いを示す情報として、異常要因推定部155に送信する。すると異常要因推定部155は、異常時の振る舞いと正常時の振る舞いとを比較して、サービスのレイテンシ低下の要因となっているコンポーネントを推定する。
例えば異常要因推定部155は、正常時振る舞い記憶部130から、新しい方からn周期分(nは1以上の整数)のコンテナのメトリックごとのパーセンタイル値を取得する。そして異常要因推定部155は、取得したパーセンタイル値に基づいて、各メトリックの正常時の振る舞いを決定する。このとき異常要因推定部155は、現在に近い周期の振る舞いほど今後の振る舞いに近いとみなすようにするため、パーセンタイル値の取得元の周期の古さに応じて、パーセンタイル値に重み付けを行う。
図15は、パーセンタイル値への重み付けの例を示す図である。図15に示した例では、周期t〜t+2周期の3周期分の正常時のパーセンタイル値を取得したものとする。このとき異常要因推定部155は、最新の周期t+2のパーセンタイル値の重みを「3」とする。また異常要因推定部155は、1つ前の周期t+1のパーセンタイル値の重みを「2」とする。さらに異常要因推定部155は、2つ前の周期tのパーセンタイル値の重みを「2」とする。
このように異常要因推定部155は、現在に近い周期のパーセンタイル値ほど重みを大きくして、n周期分の期間のパーセンタイル値(重み付きパーセンタイル値)をメトリックごとに算出する。例えば、以下のようにして、重み付きパーセンタイル値を算出する。
正常時のパーセンタイル値として、以下のデータが得られたものとする。S1は最新の周期のデータの集合である。S2は、S1の1つ前の周期のデータ集合である。S3は、S2の1つ前の周期のデータ集合である。
S1:{1,2}
S2:{3,4}
S3:{5,6}
この例では、重み付けの処理を分かりやすくするため、データの値を単純化している。S1,S2,S3に対する重み付パーセンタイル値を求めるとき、重みの分だけ、各正常データの数を増やす。例えば、集合S1,S2,S3それぞれに対する重みを、「3」、「2」、「1」とする。この場合、集合S1,S2,S3は、以下の集合に置き換えられる。
S1’=S1×3:{1,1,1,2,2,2}
S2’=S2×2:{3,3,4,4}
S3’=S3×1:{5,6}
集合S1’は、集合S1を3倍したものである。すなわち集合S1と同じ3つの集合を1つに纏めたものが、集合S1’である。集合S2’は、集合S2を2倍したものである。すなわち集合S2と同じ2つの集合を1つに纏めたものが、集合S2’である。集合S3’は、集合S3と同じである。異常要因推定部155は、これらの集合S1’,S2’S3’を1つの集合にまとめ、データを昇順ソートする。すなわち異常要因推定部155は、周期ごとの各集合について、その集合と同じ集合を重みの数だけ生成し、生成した集合を1つに纏めて、データを昇順にソートする。ソートの結果、以下の集合Sが得られる。
S=:{1,1,1,2,2,2,3,3,4,4,5,6}
異常要因推定部155は、この集合Sに基づいて得られたパーセンタイル値を、重み付きパーセンタイル値とする。すると、50パーセンタイルは「2」となる。また90パーセンタイルは「4」となる。
S1:{1,2}
S2:{3,4}
S3:{5,6}
この例では、重み付けの処理を分かりやすくするため、データの値を単純化している。S1,S2,S3に対する重み付パーセンタイル値を求めるとき、重みの分だけ、各正常データの数を増やす。例えば、集合S1,S2,S3それぞれに対する重みを、「3」、「2」、「1」とする。この場合、集合S1,S2,S3は、以下の集合に置き換えられる。
S1’=S1×3:{1,1,1,2,2,2}
S2’=S2×2:{3,3,4,4}
S3’=S3×1:{5,6}
集合S1’は、集合S1を3倍したものである。すなわち集合S1と同じ3つの集合を1つに纏めたものが、集合S1’である。集合S2’は、集合S2を2倍したものである。すなわち集合S2と同じ2つの集合を1つに纏めたものが、集合S2’である。集合S3’は、集合S3と同じである。異常要因推定部155は、これらの集合S1’,S2’S3’を1つの集合にまとめ、データを昇順ソートする。すなわち異常要因推定部155は、周期ごとの各集合について、その集合と同じ集合を重みの数だけ生成し、生成した集合を1つに纏めて、データを昇順にソートする。ソートの結果、以下の集合Sが得られる。
S=:{1,1,1,2,2,2,3,3,4,4,5,6}
異常要因推定部155は、この集合Sに基づいて得られたパーセンタイル値を、重み付きパーセンタイル値とする。すると、50パーセンタイルは「2」となる。また90パーセンタイルは「4」となる。
異常要因推定部155は、正常時の重み付きパーセンタイル値と、異常時の振る舞いを示す最新のパーセンタイル値とを、メトリック種別ごとに比較し、そのメトリック種別に関する要因度を求める。異常要因推定部155は、例えば要因度として、正の要因度と負の要因度とを求める。
図16は、要因度の計算例を示す図である。図16の例では、正常時の振る舞いを示す重み付きパーセンタイル値では、50パーセンタイル値が「15」、90パーセンタイル値が「71」、99パーセンタイル値が「90」である。また異常時の振る舞いを示す最新のパーセンタイル値では、50パーセンタイル値が「6」、90パーセンタイル値が「92」、99パーセンタイル値が「98」である。
ここで、正の要因度と負の要因度とを、以下のように定める。
・正の要因度F+=Σ(値が増加するPパーセンタイルのPの増分)×(パーセンタイル値の差)
・負の要因度F-=Σ(値が減少するPパーセンタイルのPの増分)×(パーセンタイル値の差)
Pはパーセンタイル種別を示す数値であり、50パーセンタイルの場合P=50である。値が増加するPパーセンタイルとは、正常時のパーセンタイル値より異常時のパーセンタイル値の方が大きいパーセンタイル種別である。値が減少するPパーセンタイルとは、異常時のパーセンタイル値より正常時のパーセンタイル値の方が大きいパーセンタイル種別である。
・正の要因度F+=Σ(値が増加するPパーセンタイルのPの増分)×(パーセンタイル値の差)
・負の要因度F-=Σ(値が減少するPパーセンタイルのPの増分)×(パーセンタイル値の差)
Pはパーセンタイル種別を示す数値であり、50パーセンタイルの場合P=50である。値が増加するPパーセンタイルとは、正常時のパーセンタイル値より異常時のパーセンタイル値の方が大きいパーセンタイル種別である。値が減少するPパーセンタイルとは、異常時のパーセンタイル値より正常時のパーセンタイル値の方が大きいパーセンタイル種別である。
PパーセンタイルのPの増分とは、パーセンタイル種別をPの値が小さい順に並べたときの、各パーセンタイル種別についての、直前のパーセンタイル種別からのPの値の増加量である。図16の例では、50パーセンタイル、90パーセンタイル、99パーセンタイルがある。その場合、50パーセンタイルについてのPの増分は、「50」である。90パーセンタイルについてのPの増分は、「40」(90−50)である。99パーセンタイルについてのPの増分は、「9」(99−90)である。
サービスのレイテンシが性能要件を満たしていないとき、コンテナやサーバの負荷が平常時より増加していれば、メトリック値が高い値に集中し、正の要因度が高くなる。またサービスのレイテンシが性能要件を満たしていないとき、コンテナやサーバの負荷が平常時より低下していれば、メトリック値が低い値に集中し、負の要因度が高くなる。サービスのレイテンシが性能要件を満たしているのに、コンテナまたはサーバの正の要因度よりも負の要因度の方が高い場合、そのコンテナまたはサーバとは別の要因で性能が劣化していると判断できる。
図16に示した例では、要因度は以下の通りとなる。
・正の要因度F+=(90−50)×(92−71)+(99−90)×(98−90)=912
・負の要因度F-=50×(15−6)=450
異常要因推定部155は、このような要因度の計算を、メトリック種別ごとに行う。そして異常要因推定部155は、最大の要因度の算出元のコンテナが実行しているコンポーネントを、異常の要因である要因コンポーネントとして推定する。
・正の要因度F+=(90−50)×(92−71)+(99−90)×(98−90)=912
・負の要因度F-=50×(15−6)=450
異常要因推定部155は、このような要因度の計算を、メトリック種別ごとに行う。そして異常要因推定部155は、最大の要因度の算出元のコンテナが実行しているコンポーネントを、異常の要因である要因コンポーネントとして推定する。
図17は、要因コンポーネントの推定例を示す図である。図17に示すように、すべてのコンテナについて、メトリック種別ごとに、正の要因度と負の要因度とが算出される。異常要因推定部155は、算出された要因度の中から、最大の要因度を抽出する。図17の例では、コンテナC11のCPU使用率についての正の要因度の値が最大となっている。異常要因推定部155は、抽出した要因度の算出元となっているコンテナC11で実行しているコンポーネント(コンポーネント名「コンポーネント1」)を、要因コンポーネントとして推定する。このとき異常要因推定部155は、最大の要因度に対応するメトリック種別「CPU使用率」を、要因メトリックとする。また異常要因推定部155は、最大の要因度が正の要因度なのか負の要因度なのかを示すコンテナ要因度符号を、正とする。
さらに異常要因推定部155は、コンテナ配置管理テーブル141から、最大の要因度の算出元となったコンテナが実装されているサーバのサーバ名を取得する。そして異常要因推定部155は、取得したサーバ名を、コンテナ稼働サーバのサーバ名とする。図17の例では、コンテナ稼働サーバは「サーバ1」である。
また異常要因推定部155は、サーバについても、メトリック種別ごとの要因度を計算する。そして異常要因推定部155は、サーバのメトリック種別それぞれについて、正の要因度と負の要因度とを比較する。異常要因推定部155は、正の要因度が負の要因度以上であれば、そのメトリック種別の要因度符号を「正」とする。異常要因推定部155は、正の要因度が負の要因度未満であれば、そのメトリック種別の要因度符号を「負」とする。
そして、異常要因推定部155は、コンテナ稼働サーバの要因メトリックの要因度符号を、サーバ要因度符号とする。
図18は、サーバ要因度符号の判定例を示す図である。図18の例では、コンテナ稼働サーバ「サーバ1」の要因メトリック「CPU使用率」の要因度符号は「正」であるため、サーバ要因度符号は「正」となる。
図18は、サーバ要因度符号の判定例を示す図である。図18の例では、コンテナ稼働サーバ「サーバ1」の要因メトリック「CPU使用率」の要因度符号は「正」であるため、サーバ要因度符号は「正」となる。
なおサーバの要因度についても、コンテナと同じ手順で計算することができるが、サーバについては、各メトリック種別の要因度符号が判明すればよい。そこで例えば、正の要因度と負の要因度とを分けずに、メトリック種別の要因度を以下の式で計算してもよい。
・要因度F=Σ(PパーセンタイルのPの増分)×(パーセンタイル値の差)
このときのパーセンタイル値の差は、正常値のパーセンタイル値から異常時のパーセンタイル値を減算した値である。このようにして計算した要因度Fが0以上の値であれば、要因度符号は「正」である。要因度Fが負の値であれば、要因度符号は「負」である。
・要因度F=Σ(PパーセンタイルのPの増分)×(パーセンタイル値の差)
このときのパーセンタイル値の差は、正常値のパーセンタイル値から異常時のパーセンタイル値を減算した値である。このようにして計算した要因度Fが0以上の値であれば、要因度符号は「正」である。要因度Fが負の値であれば、要因度符号は「負」である。
異常要因推定部155が、要因コンポーネント、要因メトリック、最大要因符号、およびサーバ要因度符号を決定すると、コンテナ配置制御部156が、レイテンシを改善するようにコンテナの追加、またはコンテナの配置先の変更などの性能改善処理を行う。
コンテナ配置制御部156は、例えば、コンテナ要因度符号が正の場合、要因コンポーネントのリソースが不足していると判断し、要因コンポーネントのスケールアウトを行う。またコンテナ配置制御部156は、要因コンポーネントの要因度が負の場合であり、かつサーバ要因度符号が「正」の場合、要因コンポーネント以外のコンポーネントによるリソースの負荷が大きい影響で、要因コンポーネントの性能が低下していると判断する。この場合、コンテナ配置制御部156は、コンテナの配置変換を行う。コンテナの配置変換は、コンテナを稼働させるサーバを、別のサーバに変更する処理である。
なお、コンポーネントのコンテナが使用するリソース量が規定されている場合がある。この場合、コンテナ配置制御部156は、コンポーネントのスケールアウトまたは配置変換のとき、コンテナを収容できるサーバを配置先候補とする。配置先候補となるサーバが複数ある場合、コンテナ配置制御部156は、コンテナが各配置先候補に配備されたと仮定したとき、サーバの最小残余リソース量が最大となる配置先候補を、配置先に決定する。
図19は、コンテナの配置例を示す図である。図19の例では、要因コンポーネントが「コンポーネント1」であり、コンテナ要因度符号が「正」である。この場合、コンテナ配置制御部156は、「コンポーネント1」のスケールアウトを行う。
このときコンテナ配置制御部156は、サーバリソース管理テーブル142を参照し、各サーバの残余リソース量を確認する。図19の例では、「サーバ1」の残余リソース量は、CPU「50」、メモリ「30」、ネットワーク「40」である。「サーバ2」の残余リソース量は、CPU「30」、メモリ「50」、ネットワーク「60」である。
またコンテナ配置制御部156は、コンテナリソース管理テーブル143を参照し、要因コンポーネントのコンテナ1つ当たりに使用するリソース量を確認する。図19の例では、要因コンポーネントである「コンポーネント1」のコンテナの使用リソースは、CPU「10」、メモリ「20」、ネットワーク「10」である。
ここで「コンポーネント1」のコンテナを配置できるだけの残余リソース量を有しているサーバが、サーバ名「サーバ1」のサーバ42と、サーバ名「サーバ2」のサーバ43のみであるものとする。この場合、サーバ42とサーバ43とが、配置先候補となる。
サーバ名「サーバ1」のサーバ42にコンテナを配置した場合の残余リソース量は、CPU「40」、メモリ「10」、ネットワーク「30」である。サーバ名「サーバ2」のサーバ43にコンテナを配置した場合の残余リソース量は、CPU「20」、メモリ「30」、ネットワーク「50」である。この場合、サーバ名「サーバ1」のサーバ42の最小残余リソース量は、メモリの「10」である。それに対して、サーバ名「サーバ2」のサーバ43の最小残余リソース量は、CPUの「20」である。
コンテナ配置制御部156は、最小残余リソース量が最大となる、サーバ名「サーバ2」のサーバ43を配置先として選択する。そしてコンテナ配置制御部156は、サーバ43に、スケールアウト処理として。「コンポーネント1」を実行するためのコンテナC13を配置する。
コンテナ配置制御部156は、Apdex値が目標値に達するまで、性能調整を継続する。そして、コンテナ配置制御部156は、Apdex値が目標値に達すると、性能調整を終了する。
図20は、性能調整結果の一例を示す図である。図20の例では、Apdex値の目標値は0.8以上である。性能調整前はApdex値が「0.75」であったのが、性能調整を行うことで、Apdex値が「0.83」まで向上している。
次に性能調整処理の手順について詳細に説明する。
図21は、性能調整処理の手順の一例を示すフローチャートである。なお図21に示す処理は、1つのサービスについて性能調整を行う場合の処理である。複数のサービスについて性能調整を行う場合、図21に示す処理が、複数のサービスそれぞれについて実行される。以下、図21に示す処理をステップ番号に沿って説明する。
図21は、性能調整処理の手順の一例を示すフローチャートである。なお図21に示す処理は、1つのサービスについて性能調整を行う場合の処理である。複数のサービスについて性能調整を行う場合、図21に示す処理が、複数のサービスそれぞれについて実行される。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS101]性能調整エンジン150は、例えば管理者により、サービスの性能調整処理の開始指示の入力が行われると、繰り返し回数を示す変数Rの値を「0」に初期化する。
[ステップS102]レイテンシ検査部153は、性能調整対象のサービスについてのサービス情報と、そのサービスのレイテンシとを取得する。例えばレイテンシ検査部153は、サービス情報記憶部110からサービス情報を取得する。取得するサービス情報には、性能要件として指定されているApdexの値、Apdexの算出に用いるSatisfied Time(T)が含まれる。またレイテンシ検査部153は、ゲートウェイ41のレイテンシ記憶部41bから、直近の所定期間内に計測された、性能調整対象のサービスに対するリクエストのレイテンシを取得する。
[ステップS103]レイテンシ検査部153は、複数のリクエストのレイテンシに基づいて、サービスのApdexを計算する。
[ステップS104]レイテンシ検査部153は、ステップS103で計算したApdexの値が、性能要件を満たしているか否かを判断する。例えばレイテンシ検査部153は、算出したApdex値が性能要件として指定されたApdex値以上であれば、性能要件を満たしていると判断する。レイテンシ検査部153は、性能要件を満たしている場合、処理をステップS105に進める。またレイテンシ検査部153は、性能要件を満たしていない場合、処理をステップS107に進める。
[ステップS104]レイテンシ検査部153は、ステップS103で計算したApdexの値が、性能要件を満たしているか否かを判断する。例えばレイテンシ検査部153は、算出したApdex値が性能要件として指定されたApdex値以上であれば、性能要件を満たしていると判断する。レイテンシ検査部153は、性能要件を満たしている場合、処理をステップS105に進める。またレイテンシ検査部153は、性能要件を満たしていない場合、処理をステップS107に進める。
[ステップS105]振る舞い計算部154は、コンテナとサーバとの正常時の振る舞いを計算して、正常時振る舞い記憶部130に保存する。例えば振る舞い計算部154は、メトリック情報記憶部120から、コンテナとサーバとの直近の所定期間分のメトリックの値を取得し、複数のパーセンタイル種別についてのパーセンタイル値を計算する。そして振る舞い計算部154は、コンテナのパーセンタイル値を設定したコンテナ振る舞い管理テーブルを、そのコンテナの正常時の振る舞いを示す情報として、正常時振る舞い記憶部130に格納する。また振る舞い計算部154は、サーバのパーセンタイル値を設定したサーバ振る舞い管理テーブルを、そのサーバの正常時の振る舞いを示す情報として、正常時振る舞い記憶部130に格納する。
[ステップS106]性能調整エンジン150は、繰り返し回数を示す変数Rを「0」にリセットする。その後、性能調整エンジン150は、処理をステップS102に進める。
[ステップS107]振る舞い計算部154は、コンテナとサーバとの異常時の振る舞いを計算する。例えば振る舞い計算部154は、メトリック情報記憶部120から、コンテナとサーバとの直近の所定期間分のメトリックの値を取得し、複数のパーセンタイル種別についてのパーセンタイル値を計算する。複数のコンテナそれぞれについて算出したパーセンタイル値が、対応するコンテナの異常時の振る舞いを示す情報である。また複数のサーバそれぞれについて算出したパーセンタイル値が、対応するサーバの異常時の振る舞いを示す情報である。
[ステップS108]異常要因推定部155は、性能調整対象のサービスの提供に使用されるコンポーネントを実行するコンテナの正常時と異常時との振る舞いの差を、メトリック種別ごとに計算する。例えば異常要因推定部155は、正常時振る舞い記憶部130から重み付きパーセンタイル値を取得する。次に異常要因推定部155は、正常時の振る舞いを示す重み付きパーセンタイル値と、ステップS107で計算した異常時の振る舞いを示すパーセンタイル値とを比較して、メトリック種別ごとに正の要因度と負の要因度を計算する。
[ステップS109]異常要因推定部155は、ステップS108における計算結果に基づいて、要因コンポーネントを推定する。例えば異常要因推定部155は、メトリック種別ごとの正の要因度と負の要因度との中から、最も大きな値の要因度を抽出する。そして異常要因推定部155は、抽出した要因度を算出元となったコンテナで実行されているコンポーネントを、要因コンポーネントとして推定する。
[ステップS110]性能調整エンジン150は、繰り返し回数を示す変数Rの値が、閾値X(Xは、1以上の整数)に達したか否かを判断する。性能調整エンジン150は、繰り返し回数が閾値Xに達した場合、性能調整を断念し、処理を終了する。またコンテナ配置制御部156は、繰り返し回数が閾値Xに達していなければ、処理をステップS111に進める。
[ステップS111]コンテナ配置制御部156は、ステップS109において抽出した要因度の符号(コンテナ要因度符号)が正か否かを判断する。コンテナ配置制御部156は、正の要因度であれば、処理をステップS112に進める。またコンテナ配置制御部156は、負の要因度であれば、処理をステップS113に進める。
[ステップS112]コンテナ配置制御部156は、要因コンポーネントのスケールアウトを実施する。すなわちコンテナ配置制御部156は、要因コンポーネントを実行するコンテナを、いずれかのサーバに追加で配置する。例えばコンテナ配置制御部156は、コンテナを配置可能なサーバのうち、配置後の空きリソース量が最も多いサーバに、コンテナを配置する。その後、コンテナ配置制御部156は、処理をステップS115に進める。
[ステップS113]コンテナ配置制御部156は、サーバ要因度符号が正か否かを判断する。コンテナ配置制御部156は、サーバ要因度符号が正の場合、処理をステップS114に進める。またコンテナ配置制御部156は、サーバ要因度符号が負の場合、性能調整を断念し、処理を終了する。
[ステップS114]コンテナ配置制御部156は、コンテナの配置変更を行う。すなわちコンテナ配置制御部156は、ステップS109で抽出した要因度の計算元となったコンテナの配置先を、現在のサーバから別のサーバに変更する。
[ステップS115]性能調整エンジン150は、繰り返し回数を示す変数Rの値を1だけカウントアップし、処理をステップS102に進める。
このようにして、性能要件を満たさないサービスにおいて、どのコンポーネントがボトルネックになっているのかを適切に判断し、そのコンポーネントの処理能力が向上するように性能調整をすることができる。これにより、コンポーネントごとの性能要件を定めなくても、コンポーネントの性能が不足した場合、コンポーネントの機能が自動で拡張される。その結果、例えばシステムの運用管理コストが削減される。またコンポーネントの性能調整が自動で行われることにより、コンポーネントの開発時にそのコンポーネントの発揮性能を意識せずにすみ、開発コストが削減される。
このようにして、性能要件を満たさないサービスにおいて、どのコンポーネントがボトルネックになっているのかを適切に判断し、そのコンポーネントの処理能力が向上するように性能調整をすることができる。これにより、コンポーネントごとの性能要件を定めなくても、コンポーネントの性能が不足した場合、コンポーネントの機能が自動で拡張される。その結果、例えばシステムの運用管理コストが削減される。またコンポーネントの性能調整が自動で行われることにより、コンポーネントの開発時にそのコンポーネントの発揮性能を意識せずにすみ、開発コストが削減される。
また第2の実施の形態では、コンテナの正常時と異常時との振る舞いの差に基づいて、レイテンシ悪化の要因となっているコンポーネントを判断している。これにより、レイテンシ悪化の要因のコンポーネントを適切に判断することができる。
しかも第2の実施の形態では、メトリックの度数分布からパーセンタイル値を求めることで、メトリックの度数分布で示される状態が、比較容易な数値に置き換えられている。これにより、正常時と異常時との振る舞いの差を数値化でき、複数のコンテナの中から、振る舞いの差が最も大きいコンテナを容易に特定可能となっている。
さらに第2の実施の形態では、重み付きパーセンタイル値を用いることで、正常時の状態に対して、最近の状態を強く反映させている。これにより、正常時の振る舞いを正しく計算することができる。すなわち、クラウドコンピューティングシステムでは、サーバの追加やソフトウェアの追加などのシステム構成の変更が頻繁に行われる。そのため、コンテナやサーバの遠い過去の正常時の振る舞いは、最近の正常時の振る舞いと大きく異なる可能性がある。また、最近の短い期間の振る舞いを正常時の振る舞いとしてしまうと、ある一時期に発生した特殊要因(例えばサーバ故障)などが振る舞いに反映されてしまい、正常時の振る舞いとしての正確性に欠ける。そこで性能調整エンジン150は、最近の正常時の振る舞いを強く反映させて、ある程度長い期間の振る舞いに基づいて正常時の振る舞いを計算している。その結果、正常時の振る舞いの正確性が向上する。
また第2の実施の形態では、性能調整エンジン150は、性能劣化の要因であるコンテナの要因度の符号(コンテナ要因度符号)が正であれば、そのコンテナに対応するコンポーネントのスケールアウトを行うが、コンテナ要因度符号が負であれば配置変更を行う。コンテナ要因度符号が負の場合、性能劣化の要因であるコンテナは、そのコンテナ自身の問題ではなく、コンテナが実装されたサーバの問題(例えば別のソフトウェアの実行による過負荷)によって、性能が劣化している可能性がある。そこで性能調整エンジン150は、コンテナの配置変更により、コンテナを何らかの問題を抱えたサーバから別のサーバに移動させ、コンテナが正しく性能を発揮できるようにしている。これにより、無駄なスケールアウトによるリソースの過大消費が抑止される。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、スケールアウト後に、スケールインが可能であれば、スケールインを実施するものである。
次に第3の実施の形態について説明する。第3の実施の形態は、スケールアウト後に、スケールインが可能であれば、スケールインを実施するものである。
すなわち、性能要件を満たすようにすることが主目的であるが、できるだけ少ないリソースでこれを実現させることも重要である。単純にスケールアウトすると、リソースの消費量が増加し、本来は不要なリソースが使用される可能性がある。そこで、第3の実施の形態では、不要なリソース使用量の増加を抑制するため、性能調整エンジン150は、可能であればスケールアウト後にスケールインを実施する。
具体的には、性能調整エンジン150は、要因コンポーネントのコンテナが稼働しているサーバよりも負荷の小さいサーバが2つある場合には、現在稼動中のコンテナを削除して、負荷の小さい2つのサーバでコンテナを稼働させる。このスケールアウト(2増1減のスケールアウト)後のコンポーネントの総負荷(コンテナの負荷の合計)が正常時の総負荷よりも小さい場合、性能調整エンジン150は、コンテナが稼働しているサーバの中で最小の負荷であるサーバを選択し、選択したサーバ上のコンテナを削除する。これにより、コンテナ数を増加させることなく性能要件を満たすように性能が調整される。
以下、図22〜図24を参照して、第3の実施の形態における性能調整処理の手順について詳細に説明する。
図22は、第3の実施の形態における性能調整処理の手順の一例を示すフローチャートの前半である。図22に示す処理のうち、ステップS201〜S204、ステップS206〜S210は、それぞれ図21に示した第2の実施の形態におけるステップS101〜S109の処理と同じである。異なるステップS205の処理は、以下の通りである。
図22は、第3の実施の形態における性能調整処理の手順の一例を示すフローチャートの前半である。図22に示す処理のうち、ステップS201〜S204、ステップS206〜S210は、それぞれ図21に示した第2の実施の形態におけるステップS101〜S109の処理と同じである。異なるステップS205の処理は、以下の通りである。
[ステップS205]ステップS204において性能要件を満たしていると判断した場合、コンテナ配置制御部156はスケールイン処理を行う。コンテナ配置制御部156は、スケールイン処理が終了すると、処理をステップS206に進める。
図23は、スケールイン処理の手順の一例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
[ステップS221]コンテナ配置制御部156は、2増1減のスケールアウトを実施済みであることを示すフラグ「SCALE_FLAG」の値が「true」か否かを判断する。フラグ「SCALE_FLAG」は初期値が「false」であり、2増1減のスケールアウトの実施後に「true」に更新される。コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」であれば、処理をステップS222に進める。またコンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」でなければ、スケールイン処理を終了する。
[ステップS221]コンテナ配置制御部156は、2増1減のスケールアウトを実施済みであることを示すフラグ「SCALE_FLAG」の値が「true」か否かを判断する。フラグ「SCALE_FLAG」は初期値が「false」であり、2増1減のスケールアウトの実施後に「true」に更新される。コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」であれば、処理をステップS222に進める。またコンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」でなければ、スケールイン処理を終了する。
[ステップS222]コンテナ配置制御部156は、2増1減のスケールアウトを実施時の要因コンポーネントの総負荷が、正常時の総負荷以下か否かを判断する。要因コンポーネントの総負荷は、例えばそのコンポーネントを実行しているコンテナの、スケールアウト時に最大の要因度となったメトリック種別の最新のメトリック値の合計である。正常時の総負荷は、例えば要因コンポーネントを実行しているコンテナの、スケールアウト時に最大の要因度となったメトリック種別の、過去の平常動作時のメトリック値の合計である。コンテナ配置制御部156は、要因コンポーネントの総負荷が正常時の総負荷以下であれば、処理をステップS223に進める。またコンテナ配置制御部156は、要因コンポーネントの総負荷が正常時の総負荷より大きければ、処理をステップS224に進める。
[ステップS223]コンテナ配置制御部156は、要因コンポーネントのスケールインを実施する。すなわちコンテナ配置制御部156は、要因コンポーネントを実行するコンテナのうちの1つをサーバから削除する。その後、スケールイン処理が終了する。
[ステップS224]コンテナ配置制御部156は、フラグ「SCALE_FLAG」を「false」に設定する。その後、スケールイン処理が終了する。
このようにして、スケールイン処理が行われる。
このようにして、スケールイン処理が行われる。
図24は、第3の実施の形態における性能調整処理の手順の一例を示すフローチャートの後半である。以下、図24に示す処理をステップ番号に沿って説明する。
[ステップS231]コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」か否かを判断する。コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」であれば、処理をステップS232に進める。またコンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」でなければ、処理をステップS233に進める。
[ステップS231]コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」か否かを判断する。コンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」であれば、処理をステップS232に進める。またコンテナ配置制御部156は、フラグ「SCALE_FLAG」の値が「true」でなければ、処理をステップS233に進める。
[ステップS232]コンテナ配置制御部156は、要因コンポーネントを実行するコンテナを1つ増加させるスケールアウトを実施する。その後、コンテナ配置制御部156は、処理をステップS241に進める。
[ステップS233]性能調整エンジン150は、繰り返し回数を示す変数Rの値が、閾値Xに達したか否かを判断する。性能調整エンジン150は、繰り返し回数が閾値Xに達した場合、性能調整を断念し、処理を終了する。またコンテナ配置制御部156は、繰り返し回数が閾値Xに達していなければ、処理をステップS234に進める。
[ステップS234]コンテナ配置制御部156は、ステップS210において抽出した要因度の符号(コンテナ要因度符号)が正か否かを判断する。コンテナ配置制御部156は、正の要因度であれば、処理をステップS237に進める。またコンテナ配置制御部156は、負の要因度であれば、処理をステップS235に進める。
[ステップS235]コンテナ配置制御部156は、サーバ要因度符号が正か否かを判断する。コンテナ配置制御部156は、サーバ要因度符号が正の場合、処理をステップS236に進める。またコンテナ配置制御部156は、サーバ要因度符号が負の場合、性能調整を断念し、処理を終了する。
[ステップS236]コンテナ配置制御部156は、コンテナの配置変更を行う。すなわちコンテナ配置制御部156は、ステップS210で抽出した要因度の計算元となったコンテナの配置先を、現在のサーバから別のサーバに変更する。
[ステップS237]コンテナ配置制御部156は、サーバ要因度符号が正か否かを判断する。コンテナ配置制御部156は、サーバ要因度符号が正の場合、処理をステップS238に進める。またコンテナ配置制御部156は、サーバ要因度符号が負の場合、処理をステップS240に進める。
[ステップS238]コンテナ配置制御部156は、2増1減のスケールアウト処理を行う。
[ステップS239]コンテナ配置制御部156は、フラグ「SCALE_FLAG」を「true」に設定する。その後、コンテナ配置制御部156は、処理をステップS241に進める。
[ステップS239]コンテナ配置制御部156は、フラグ「SCALE_FLAG」を「true」に設定する。その後、コンテナ配置制御部156は、処理をステップS241に進める。
[ステップS240]コンテナ配置制御部156は、1増のスケールアウト処理を行う。
[ステップS241]性能調整エンジン150は、繰り返し回数を示す変数Rの値を1だけカウントアップし、処理をステップS202(図22参照)に進める。
[ステップS241]性能調整エンジン150は、繰り返し回数を示す変数Rの値を1だけカウントアップし、処理をステップS202(図22参照)に進める。
このようにして、2増1減のスケールアップをした場合、スケールインが可能であれば、スケールインを行うことができる。その結果、無駄にリソースを消費せずにすみ、リソースの有効利用が図れる。
〔その他の実施の形態〕
第2および第3の実施の形態では、コンテナごとに正の要因度と負の要因度とを計算しているが、例えば正の要因度と負の要因度との合計を、そのコンテナの要因度としてもよい。
第2および第3の実施の形態では、コンテナごとに正の要因度と負の要因度とを計算しているが、例えば正の要因度と負の要因度との合計を、そのコンテナの要因度としてもよい。
また第2および第3の実施の形態では、リソースのメトリック情報の代表値としてパーセンタイル値を用いているが、平均値、中央値などの他の代表値を用いてもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 サービス
2〜4 サーバ
5 端末装置
10 管理装置
11 記憶部
11a 第2状態情報
12 処理部
2〜4 サーバ
5 端末装置
10 管理装置
11 記憶部
11a 第2状態情報
12 処理部
Claims (9)
- コンピュータに、
複数の処理を連携させることで提供されるサービスの性能を示す性能情報を取得し、
前記性能情報が、前記サービスに求められる性能を示す性能要件を満たしているか否かを判断し、
前記性能情報が前記性能要件を満たしていない場合、直近の所定期間における前記複数の処理それぞれの動作状態を示す第1状態情報を取得し、
前記サービスの性能が前記性能要件を満たしているときの前記複数の処理それぞれの動作状態を示す第2状態情報と、前記第1状態情報とに基づいて、前記性能要件が満たされているときと満たされてないときとの動作状態の差を、前記複数の処理それぞれについて計算し、
前記複数の処理それぞれの動作状態の差に基づいて、前記サービスの性能悪化要因となっている処理を判定する、
処理を実行させる性能管理プログラム。 - 前記コンピュータに、さらに、
前記性能情報が前記性能要件を満たしている場合、直近の所定期間における前記複数の処理それぞれの動作状態を示す第3状態情報を取得し、前記第3状態情報に基づいて、前記第2状態情報を更新する、
処理を実行させる請求項1記載の性能管理プログラム。 - 前記第2状態情報の更新では、複数の期間の前記第3状態情報に基づき、現在に近い期間の前記第3状態情報に示される動作状態ほど、更新後の前記第2状態情報に強く反映させる、
請求項2記載の性能管理プログラム。 - 前記第2状態情報は、前記サービスの性能が前記性能要件を満たしているときに前記複数の処理それぞれが使用しているリソースの稼働状況の時系列変化を示す第2リソース情報の所定の代表値である第2代表値であり、
前記第1状態情報の取得では、直近の前記所定期間に前記複数の処理それぞれが使用している前記リソースの稼働状況の時系列変化を示す第1リソース情報の所定の代表値を、第1代表値として算出し、
動作状態の差の計算では、前記複数の処理それぞれについて、前記第1代表値と前記第2代表値との差を計算する、
請求項1ないし3のいずれかに記載の性能管理プログラム。 - 前記コンピュータに、さらに、
前記性能悪化要因と判定された要因処理の動作状態の差に基づいて、性能悪化に対する対処方法を決定し、
決定した前記対処方法による対処を実施する、
処理を実行させる請求項1ないし4のいずれかに記載の性能管理プログラム。 - 前記対処方法の決定では、前記要因処理の前記第2状態情報の方が、前記要因処理の前記第1状態情報よりも負荷が大きい動作状態を表している場合、前記対処方法として、前記要因処理のスケールアウトを決定し、前記要因処理の前記第1状態情報の方が、前記要因処理の前記第2状態情報よりも負荷が大きい動作状態を表している場合、前記対処方法として、前記要因処理を実行するサーバを変更することを決定する、
請求項5記載の性能管理プログラム。 - 前記対処方法の決定では、前記要因処理を現在実行している第1サーバでの前記要因処理の実行を停止し、前記第1サーバとは異なる複数の第2サーバそれぞれで前記要因処理を実行させることを決定し、
前記コンピュータに、さらに、
決定した前記対処方法による対処を実施後の、前記複数の第2サーバが前記要因処理を実行するための処理負荷が、所定値以下の場合、前記複数の第2サーバの一部における前記要因処理の実行を停止させる、
処理を実行させる請求項5記載の性能管理プログラム。 - コンピュータが、
複数の処理を連携させることで提供されるサービスの性能を示す性能情報を取得し、
前記性能情報が、前記サービスに求められる性能を示す性能要件を満たしているか否かを判断し、
前記性能情報が前記性能要件を満たしていない場合、直近の所定期間における前記複数の処理それぞれの動作状態を示す第1状態情報を取得し、
前記サービスの性能が前記性能要件を満たしているときの前記複数の処理それぞれの動作状態を示す第2状態情報と、前記第1状態情報とに基づいて、前記性能要件が満たされているときと満たされてないときとの動作状態の差を、前記複数の処理それぞれについて計算し、
前記複数の処理それぞれの動作状態の差に基づいて、前記サービスの性能悪化要因となっている処理を判定する、
性能管理方法。 - 複数の処理を連携させることで提供されるサービスの性能が、前記サービスに求められる性能を示す性能要件を満たしているときの、前記複数の処理それぞれの動作状態を示す第2状態情報を記憶する記憶部と、
前記サービスの性能を示す性能情報を取得し、前記性能情報が前記性能要件を満たしているか否かを判断し、前記性能情報が前記性能要件を満たしていない場合、直近の所定期間における前記複数の処理それぞれの動作状態を示す第1状態情報を取得し、前記第1状態情報と前記第2状態情報とに基づいて、前記性能要件が満たされているときと満たされてないときとの動作状態の差を、前記複数の処理それぞれについて計算し、前記複数の処理それぞれの動作状態の差に基づいて、前記サービスの性能悪化要因となっている処理を判定する処理部と、
を有する管理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017030013A JP2018136681A (ja) | 2017-02-21 | 2017-02-21 | 性能管理プログラム、性能管理方法、および管理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017030013A JP2018136681A (ja) | 2017-02-21 | 2017-02-21 | 性能管理プログラム、性能管理方法、および管理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018136681A true JP2018136681A (ja) | 2018-08-30 |
Family
ID=63366816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017030013A Pending JP2018136681A (ja) | 2017-02-21 | 2017-02-21 | 性能管理プログラム、性能管理方法、および管理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018136681A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020217441A1 (ja) * | 2019-04-26 | 2020-10-29 | 三菱電機株式会社 | データ処理装置、データ処理方法およびプログラム |
JP2021196912A (ja) * | 2020-06-15 | 2021-12-27 | ヤフー株式会社 | 実行装置、実行方法、および実行プログラム |
-
2017
- 2017-02-21 JP JP2017030013A patent/JP2018136681A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020217441A1 (ja) * | 2019-04-26 | 2020-10-29 | 三菱電機株式会社 | データ処理装置、データ処理方法およびプログラム |
JPWO2020217441A1 (ja) * | 2019-04-26 | 2021-05-06 | 三菱電機株式会社 | データ処理装置、データ処理方法およびプログラム |
CN113728311A (zh) * | 2019-04-26 | 2021-11-30 | 三菱电机株式会社 | 数据处理装置、数据处理方法及程序 |
JP2021196912A (ja) * | 2020-06-15 | 2021-12-27 | ヤフー株式会社 | 実行装置、実行方法、および実行プログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7004902B2 (ja) | 性能評価プログラム、および性能評価方法 | |
US10896055B2 (en) | Capacity risk management for virtual machines | |
US10225333B2 (en) | Management method and apparatus | |
US11533238B2 (en) | Capacity management of computing resources based on time series analysis | |
US10887199B2 (en) | Performance adjustment method, apparatus for performance adjustment, and non-transitory computer-readable storage medium for storing program | |
US20150277956A1 (en) | Virtual machine control method, apparatus, and medium | |
AU2019201625B2 (en) | Elastic storage volume type selection and optimization engine for public cloud environments | |
WO2020093637A1 (zh) | 设备状态预测方法、***、计算机装置及存储介质 | |
US20120317069A1 (en) | Throughput sustaining support system, device, method, and program | |
US20160117199A1 (en) | Computing system with thermal mechanism and method of operation thereof | |
US20160006640A1 (en) | Management computer, allocation management method, and non-transitory computer readable storage medium | |
US11165665B2 (en) | Apparatus and method to improve precision of identifying a range of effects of a failure in a system providing a multilayer structure of services | |
CN111897706A (zh) | 服务器性能预测方法、装置、计算机***和介质 | |
JP2018136681A (ja) | 性能管理プログラム、性能管理方法、および管理装置 | |
US11385700B2 (en) | Estimation of power consumption for a job based on adjusted calculation of similarities between jobs | |
JP2019191894A (ja) | データストアシステム及びデータストア管理方法 | |
EP3599547A1 (en) | Elastic storage volume type selection and optimization engine for public cloud environments | |
US20180285168A1 (en) | Information processing apparatus and information processing system | |
US20190065337A1 (en) | Log management apparatus, and log management method | |
CN114598705A (zh) | 消息负载均衡方法、装置、设备和介质 | |
CN112527537A (zh) | 在线服务***的质量监控方法、装置、设备和介质 | |
CN113778727A (zh) | 数据处理方法及装置、电子设备和计算机可读存储介质 | |
JP2019133246A (ja) | 順序制御プログラム、順序制御方法、及び情報処理装置 | |
WO2015145677A1 (ja) | 管理計算機及びプラットフォーム改善方法 | |
JPWO2012073580A1 (ja) | 性能評価装置及び性能評価方法 |