Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP6004075B2 - 計算システムおよび計算システム管理方法 - Google Patents
[go: Go Back, main page]

JP6004075B2 - 計算システムおよび計算システム管理方法 - Google Patents

計算システムおよび計算システム管理方法 Download PDF

Info

Publication number
JP6004075B2
JP6004075B2 JP2015231122A JP2015231122A JP6004075B2 JP 6004075 B2 JP6004075 B2 JP 6004075B2 JP 2015231122 A JP2015231122 A JP 2015231122A JP 2015231122 A JP2015231122 A JP 2015231122A JP 6004075 B2 JP6004075 B2 JP 6004075B2
Authority
JP
Japan
Prior art keywords
computer
standby
virtual machine
request
distribution
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.)
Expired - Fee Related
Application number
JP2015231122A
Other languages
English (en)
Other versions
JP2016042385A (ja
Inventor
隆行 湊
隆行 湊
正久 中野
正久 中野
高橋 直人
直人 高橋
道幸 水谷
道幸 水谷
永井 剛
剛 永井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015231122A priority Critical patent/JP6004075B2/ja
Publication of JP2016042385A publication Critical patent/JP2016042385A/ja
Application granted granted Critical
Publication of JP6004075B2 publication Critical patent/JP6004075B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Description

本発明は、計算システムおよび計算システム管理方法に関する。
従来、Java(登録商標)アプリケーションが動作するするアプリケーションサーバにおいて、JavaVMはJavaアプリケーションが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放するガーベジコレクション(garbage collection; GC)が用いられている。メモリ領域のうち、Javaが使用できるメモリ領域(ヒープ領域)と非ヒープ領域の両方のメモリを開放するガーベジコレクションがFullGCである。
従来のガーベジコレクションにかかる技術では、FullGCなどのオーバーヘッドを予兆して、オーバーヘッド回避手段を実行する技術がある。この場合、オーバーヘッド回避手段の実行中は、他のアプリケーションサーバに処理を振り分ける。また、待機仮想計算機を用意し、順次FullGCを行う技術もある。
さらに、リセット処理時間設定テーブルに設定された値からの時刻に自システム内にあるリセット処理実行部が呼び出され、閉塞処理およびFullGC処理を実施後、その後閉塞解除処理が呼び出される技術がある。他に、処理プログラムの処理によって参照されたメモリのガーベジコレクションを実行し、ガーベジコレクションが実行された時刻を計測し、計測の結果から、前回実行されたガーベジコレクション処理と今回実行されたガーベジコレクション処理との間隔を算出し、算出された間隔と所定のしきい値との比較の結果、異常の発生を通知するか否かを決定するものもある。この例は、システムでのしきい値とFullGCの間隔やFullGCにより増えた空きメモリ量をチェックしてアラートを通知するための仕組みである。
特開2007−199829号公報 特公平8−27784号公報 特開2003−178041号公報 特開2007−328413号公報 特開2007−226399号公報 特開2000−222376号公報 特開2001−202284号公報
しかしながら、従来の技術では、複数のアプリケーションサーバが同じ負荷となるように負荷分散が行われるため、オーバーヘッド回避手段の実行中は、残りの複数の仮想計算機でも同時にメモリ使用量が増加しFullGCが発生し、システム全体の処理効率が低下する課題がある。
また、アプリケーションサーバのオーバーヘッドを外部装置である負荷分散装置が予兆する場合、ネットワークを介した入出力処理が必要となるが、入出力処理はアプリケーションサーバの性能を低下させ、高い精度での監視を実現するのが困難という課題がある。
加えて、アプリケーションサーバのオーバーヘッドを予兆するための機能が負荷分散装置に求められるため、アプリケーションサーバの仕様や実装を変更したりスケールアップを行ったりすると負荷分散管理装置の保守が必要となる課題がある。
また、複数のアプリケーションサーバが同じ負荷となるように負荷分散が行われると、複数の仮想計算機で同時にメモリ使用量が増加する。また最近は広大なメモリ空間を備える仮想計算機が台頭し、FullGC処理時間が増長する傾向があり、結果として順次FullGC処理の所要時間も増長する。そのため、FullGC処理を順次に行う方式だと、順次FullGCの順が後ろの方の仮想計算機において、FullGC処理の順が来るまでの間にメモリ使用量が増加し、閉塞処理が実行されないままFullGCが発生し、正常なフェイルオーバーを実現できず、システム全体の処理効率が低下する課題がある。
また、従来のJavaアプリケーションやJavaのプロセスを起動するアプリケーションサーバシステム上でアプリケーションを運用している際に、空きヒープ量が不足した場合にJava標準機能としてガーベジコレクションが実行されると全体のヒープ量に比例した時間、アプリケーション処理能力が低下することとなりリクエストに対するスループットが低下してしまう。
時刻によって自動的にFullGCを行う技術では、指定時刻に必ずしもリクエストが存在しないとは限らず、過負荷時の状態が長く続く場合や過負荷時の状態が複数の時間に点在するような場合、1日のうちに複数回のFullGC処理を必要とする可能性がある。この場合、リクエストが発生しているため、少なからずスループットは低下してしまう。
そして、業務運用中メモリ使用量が増えヒープ残量が設定したしきい値を切った場合に自動的にFullGCを行う技術では、FullGCが動作したJavaVMは処理性能が著しく低下するため、業務に影響がでてしまう。
そこで、一つの側面では、ガーベジコレクション実行時におけるアプリケーション処理の負荷を軽減することを目的とする。
本願の開示する計算システムおよび計算システム管理方法は、複数の計算機に計算処理を配分する計算システムであって、ガーベジコレクション、計算機の停止、または計算機の再起動の実行を指示する実行指示部を備える。また、開示の計算システムおよび計算システム管理方法では、計算処理を実行可能な運用状態の計算機は、ガーベジコレクション、計算機の停止、または計算機の再起動の実行を指示された場合に、待機中の他の計算機を運用状態に切り替え、切り替え完了後にガーベジコレクション、計算機の停止、または計算機の再起動を開始する。そして、開示の計算システムおよび計算システム管理方法は、ガーベジコレクションまたは計算機の再起動を実行する計算機の状態に基づいて、切り替えの完了後にガーベジコレクションまたは計算機の再起動を開始するか、切り替えの完了前にガーベジコレクションまたは計算機の再起動を開始するかを選択する。
本願の開示する計算システムおよび計算システム管理方法によれば、ガーベジコレクション、計算機の停止、または計算機の再起動の実行時におけるアプリケーション処理の負荷を軽減することができる。
図1は、実施例1にかかる計算システムの構成図である。 図2は、実施例1にかかる計算システムと従来技術とを対比する説明図である。 図3は、計算システム1における増設についての説明図である。 図4は、図1に示した定義情報の説明図である。 図5は、救済措置の優先度の具体例である。 図6は、図1に示した仮想計算機管理テーブルの説明図である。 図7は、仮想計算機の起動と相互認知の処理についての説明図である。 図8−1は、運用仮想計算機の処理を説明するフローチャートである。 図8−2は、運用仮想計算機の処理を説明するフローチャートである。 図8−3は、運用仮想計算機の処理を説明するフローチャートである。 図9は、待機仮想計算機の処理を説明するフローチャートである。 図10は、装置間の連携についての説明図である。 図11は、運用仮想計算機と待機仮想計算機の連携についての説明図である。 図12は、実施例2にかかる計算システムの構成図である。 図13は、図12に示した計算機の構造についての説明図である。 図14は、仮想計算機の起動処理について説明するフローチャートである。 図15は、図14に示した運用・待機問い合わせ(S906)について説明するフローチャートである。 図16は、コマンド実行処理部による外部からのFullGC処理について説明するフローチャートである。 図17は、運用中のJavaVMによるFullGC処理について説明するフローチャートである。 図18は、待機中のJavaVMによるFullGC処理について説明するフローチャートである。 図19は、振り分け処理の動作を説明するフローチャートである。 図20は、JavaVMの状態遷移図と振り分け状態の説明図である。 図21は、仮想計算機情報記憶部が保持するデータの具体例である。 図22は、アプリケーション終了の待ち合わせ処理について説明するフローチャートである。 図23は、待機JavaVMの運用化依頼処理について説明するフローチャートである。 図24は、FullGC実行時のJavaVMと振り分け状態の遷移についての説明図である。 図25は、待機JavaVMを運用化した際のFullGC処理について説明するフローチャートである。
以下に、本発明にかかる計算システムおよび計算システム管理方法の実施例を図面に基づいて詳細に説明する。なお、本実施例は開示の技術を限定するものではない。
[計算システムの構成]
図1は、実施例1にかかる計算システムの構成図である。図1に示した計算システム1は、負荷分散装置100に仮想計算機11〜13を接続した構成を有する。また、仮想計算装置11〜13は、相互に通信可能である。
仮想計算機11〜13は、オペレーティングシステムで動作する仮想計算機であり、オペレーティングシステム上に複数実行可能である。すなわち、仮想計算機は、コンピュータのエミュレータではなく、単一のオペレーティングシステム上でそれぞれが計算アプリケーションとして計算処理を担うことができる。
仮想計算機11は、アプリケーション21、監視エージェント31、安定稼働エージェント41、情報記憶部51を有する。アプリケーション21は、負荷分散装置100から配分された計算処理を実行するアプリケーションである。監視エージェント31は、仮想計算機11の動作を監視し、監視結果に基づいて仮想計算機11のガーベジコレクションの実行を指示する実行指示部として機能する。
具体的には、監視エージェント31は、仮想計算機11で発生するタイムアウト、仮想計算機11のメモリ使用状況、負荷状況、外部からのFullGC要求の発生を監視する。そして、監視エージェント31は、監視結果を事象検知イベントとして安定稼働エージェント41に通知する。
安定稼働エージェント41は、監視エージェント31からの事象検知イベントを受信する事象検知イベント受信部61と、受信したイベントに基づいて救済措置を実行する救済措置実行部62を有する。安定稼働エージェント41は、ガーベジコレクション、計算機の停止、または計算機の再起動の実行を指示された場合に、待機中の他の仮想計算機を計算処理が実行可能な運用状態に切り替える。そして、切り替え完了後にガーベジコレクション、計算機の停止、または計算機の再起動を開始する安定稼働処理部として動作する。
情報記憶部51は、定義情報や仮想計算機管理テーブルなど、仮想計算機11が使用する各種情報を記憶する記憶部である。
仮想計算機12は、仮想計算機11と同様に、アプリケーション22、監視エージェント32、安定稼働エージェント42、情報記憶部52を有する。また、仮想計算機13は、アプリケーション23、監視エージェント33、安定稼働エージェント43、情報記憶部53を有する。アプリケーション22〜23は、アプリケーション21と同様に動作し、監視エージェント32〜33は監視エージェント31と同様に動作する。そして、安定稼働エージェント42〜43は安定稼働エージェント41と同様に動作し、情報記憶部52〜53は情報記憶部51と同様に動作する。
図2は、実施例1にかかる計算システムと従来技術(特開2007−199829号公報)とを対比する説明図である。図2に示したように計算システム1は、仮想計算機11〜13が計算機1a上で実行され、計算機1aは負荷分散装置100と接続している。そして、負荷分散装置100は、ネットワーク120を介して端末群110と接続している。
一方、比較例である計算システム3では、仮想計算機71〜73が計算機3a上で実行され、計算機3aは負荷分散装置100と接続している。加えて、負荷分散装置100と計算機3aは、運用管理装置130と接続している。そして、負荷分散装置100は、ネットワーク120を介して端末群110と接続している。
計算システム3では、仮想計算機を増設するときは、運用管理装置を含めたシステム全体で設定を行なうこととなる点が課題である。これに対して計算システム1では、運用管理装置を持たず、仮想計算機同士で通信する。このように運用管理装置を持たないため、保守作業を軽減することができる。
図3は、計算システム1における増設についての説明図である。図3に示した例では、計算機1aに負荷分散装置100が接続され、負荷分散装置100はさらに負荷分散装置101に接続されている。負荷分散装置101は、ネットワーク120を介して端末群110と接続している。
この構成では、計算機1bを負荷分散装置100に増設することもできる。この場合、負荷分散装置無しの増設となる。また、負荷分散装置100に負荷分散装置102を含む計算システム1cを増設することもできる。このように負荷分散装置100を含めて増設することが可能である。
比較例の計算システム3では、負荷分散装置が1つであることが前提となる。これは、運用管理装置が特定の負荷分散装置と通信を行なう構成となるためである。対して本実施例にかかる計算システム1では、各仮想計算機が直接、負荷分散装置と通信するため、負荷分散装置を含むシステムを追加することが可能となるのである。
[データの具体例]
図4は、図1に示した定義情報の説明図である。定義情報は、監視データのしきい値と、しきい値に達したときの救済措置を設定している。この定義情報は、定義ファイルやシステム全体から情報を取得し、メモリ上などに保持することで管理する。
図4に示した例では、定義情報は、大分類の情報名、中分類の情報名、小分類の情報名、値、その他の項目を有する。大分類の情報名「負荷分散」、中分類の情報名「ホスト」には、値「192.168.100.1」が定義されている。また、大分類の情報名「負荷分散」、中分類の情報名「ポート」には、値「12220」が定義されている。
同様に、大分類の情報名「事象検知時同報」、中分類の情報名「同報間隔」には、値「5秒」が定義されている。さらに、大分類の情報名「事象監視」、中分類の情報名「監視間隔」には、値「1秒」が定義されている。
同様に、大分類の情報名「事象監視」、中分類の情報名「応答タイムアウト」、小分類の情報名「しきい値1」には、値「480秒」が定義されている。大分類の情報名「事象監視」、中分類の情報名「応答タイムアウト」、小分類の情報名「救済措置1」には、値「強制再起動」が定義されている。
大分類の情報名「事象監視」、中分類の情報名「メモリ領域A」、小分類の情報名「しきい値1」には、値「60%」が定義されている。大分類の情報名「事象監視」、中分類の情報名「メモリ領域A」、小分類の情報名「救済措置1」には、値「転生リセット」が定義されている。
大分類の情報名「事象監視」、中分類の情報名「メモリ領域A」、小分類の情報名「しきい値2」には、値「85%」が定義されている。大分類の情報名「事象監視」、中分類の情報名「メモリ領域A」、小分類の情報名「救済措置2」には、値「強制リセット」が定義されている。
大分類の情報名「事象監視」、中分類の情報名「メモリ領域B」、小分類の情報名「しきい値1」には、値「80%」が定義されている。大分類の情報名「事象監視」、中分類の情報名「メモリ領域B」、小分類の情報名「救済措置1」には、値「転生再起動」が定義されている。
大分類の情報名「事象監視」、中分類の情報名「メモリ領域B」、小分類の情報名「しきい値2」には、値「90%」が定義されている。大分類の情報名「事象監視」、中分類の情報名「メモリ領域B」、小分類の情報名「救済措置2」には、値「強制再起動」が定義されている。
このように、しきい値と救済措置の組は1つ以上用意する。そして、しきい値に達した場合には、対応する救済措置を実行する。
救済措置には、仮想計算機の強制停止、転生停止、強制再起動、転生再起動、強制リセット、転生リセットの6種類がある。また、他の救済措置を設けることもできる。
強制は、待機仮想計算機が存在しなくても、救済措置を実行することを示し、転生は待機仮想計算機が出現する状態まで待ち、負荷分散の振り分けを切り替えてから救済措置を実行することを示す。また、リセットとは、FullGCその他の処理を実行し、資源を解放する処理を指す。
救済措置には、優先度を付与する。他の救済措置を実行中に、後から優先度の高い救済措置が必要となった場合には、その救済措置を実行する。図5は、救済措置の優先度の具体例である。図5に示した例では、強制停止が優先度1、転生停止が優先度2、強制再起動が優先度3、転生再起動が優先度4、強制リセットが優先度5、転生リセットが優先度6である。
図6は、図1に示した仮想計算機管理テーブルの説明図である。仮想計算機管理テーブルの目的は、他の仮想計算機との通信方式を知ることと、他の仮想計算と通信を行なって待機仮想計算機が存在する場合にフェイルオーバーを行なうことである。
図6では、運用開始時のテーブルと、仮想計算機追加後のテーブルを示している。運用開始時のテーブルでは、マシン名「A」、プロトコル「JMX-SNMP」、ホスト名/IPアドレス「app1.fu.com」、ポート番号「162」の仮想計算機と、マシン名「B」、プロトコル「JMX-RMI」、ホスト名/IPアドレス「app2.fu.com」、ポート番号「2001」の仮想計算機が登録されている。
さらに、仮想計算機追加後のテーブルでは、マシン名「C」、プロトコル「JMX-RMI」、ホスト名/IPアドレス「app3.fu.com」、ポート番号「2001」の仮想計算機と、マシン名「D」、プロトコル「JMX-RMI」、ホスト名/IPアドレス「app4.fu.com」、ポート番号「2003」の仮想計算機が追加して登録されている。
[処理動作]
図7は、仮想計算機の起動と相互認知の処理についての説明図である。仮想計算機は、情報処理システムへの参加時に、他の仮想計算機に同報して情報交換する。各仮想計算機は、運用か待機かを予め決められており、それを追加/削除することで、運用数や待機数を調整することができる。
具体的には、仮想計算機を起動すると、定義情報を取得し(S101)、情報処理システムへの参加を同報にて通知する(S102)。仮想計算機は、仮想計算機管理テーブルを更新し(S103)、自仮想計算機が運用であるか待機であるかを判定する(S104)。運用の場合には、負荷分散装置に自仮想計算機への振り分け開始を依頼し(S105)、運用仮想計算機として動作を開始する。また、待機の場合には、負荷分散装置に自仮想計算機への振り分け停止を依頼し(S106)、待機仮想計算機として動作を開始する。
例えば、アプリサーバAが起動した場合、アプリサーバAは他の仮想計算機に所定のプロトコルで同報し、情報処理ステムに参加する意志を示す。同報を受けたアプリサーバBは応答を返す。また必要に応じてアプリサーバAとアプリサーバBは相互認証を実施し、セキュリティを高めることができる。
アプリサーバAとアプリサーバBは、仮想計算機管理テーブルを更新するために情報交換し、それぞれ仮想計算機管理テーブルを更新する。
図8は、運用仮想計算機の処理を説明するフローチャートである。運用仮想計算機の監視エージェントは、監視データを採取し(S201)、しきい値に達した場合(S202,Yes)に事象検知イベントを送信する処理(S203)を繰り返す。
事象検知イベント受信部は、事象検知イベントを受信し(S301)、救済措置が未実行であるかを判定する(S302)。救済措置が未実行である場合(S302,Yes)、事象検知イベント受信部は当該救済措置を実行する(S304)。
救済措置を実行中である場合(S302,No)、事象検知イベント受信部は、新規救済措置の優先度が実行済みの既存救済措置よりも優先度が高いかを判定する(S303)。新規救済措置の優先度が既存救済措置の優先度よりも低い場合(S303,No)、事象検知イベント受信部は、再びステップS301に戻る。また、新規救済措置の優先度が既存救済措置の優先度よりも高い場合(S303,Yes)、事象検知イベント受信部は、既存救済措置を中止し(S305)、新規救済措置を実行して(S306)、ステップS301に戻る。救済措置が実行中でない場合(S303,No)、事象検知イベントを受信する処理(S301)から繰り返す。
救済措置実行部は、救済措置の実行指示を受け付ける(S401)と、事象検知を同報する(S402)。その後、待機仮想計算機が存在するかを判定する(S403)。待機仮想計算機が存在する場合(S403,Yes)、待機仮想計算機に運用開始を依頼し(S404)、負荷分散装置に自仮想計算機への新規のみ振り分け停止を依頼する(S405)。
仮想計算機が存在しない場合(S403,No)、救済措置実行部は、転生が必須かを判定し(S406)、転生が必須でない場合には(S406,No)、負荷分散装置に自仮想計算機への新規のみ振り分け停止を依頼する(S407)。
転生が必須である場合(S406,Yes)、救済措置実行部は、定義された時間だけ待機し(S408)と、救済措置の中止依頼があるかを判定する(S409)。そして、救済措置の中止依頼があれば(S409,Yes)、救済措置を中止し、ステップS401に戻る。救済措置の停止依頼がなければ(S409,No)、ステップS402に戻る。
ステップS405、ステップS407の後には、救済措置実行部は、残存処理の終了を待ち(S410)、負荷分散装置に自仮想計算機への振り分け停止を依頼し(S411)、救済措置の種類を判定する(S412)。救済措置の種類が再起動である場合には、自仮想計算機を再起動し(S413)、救済措置の種類がリセットである場合には自仮想計算機をリセットして(S414)、処理を終了する。
図9は、待機仮想計算機の処理を説明するフローチャートである。待機仮想計算機は、事象検知の同報を受け付ける(S501)と、送信元に応答し(S502)、運用開始の依頼を受け付けると(S503)、負荷分散装置に自仮想計算機への振り分け開始を依頼(S504)する。そして、FullGCを実行し(S505)、送信元に応答して(S506)、運用仮想計算機となる。
図10は、装置間の連携についての説明図である。まず、運用仮想計算機と待機仮想計算機が相互認知する。すなわち、運用仮想計算機が仮想計算機を認識し(S701)、仮想計算機が運用仮想計算機を認識する(S801)。
運用仮想計算機は負荷分散装置に振り分け開始を依頼し(S702)、待機仮想計算機は負荷分散装置に振り分け停止を依頼する(S802)。負荷分散装置は、待機仮想計算機(B)からの振り分け停止依頼を受け付け(S601)、待機仮想計算機(B)への振り分けを停止する(S602)。また、負荷分散装置は、運用仮想計算機(A)からの振り分け開始依頼を受け付け(S603)、運用仮想計算機(A)への振り分けを開始する(S604)。
運用仮想計算機は、端末からの要求処理を開始する(S703)。その後、運用仮想計算が監視エージェントで問題を検知すると(S704)、待機仮想計算機に運用を依頼する(S705)。待機仮想計算機は、運用仮想計算機に応答し、待機仮想計算機への振り分け開始を負荷分散装置に依頼して(S803)、FullGCを実行し(S804)、運用状態となる。
負荷分散装置は、待機仮想計算機からの振り分け開始依頼を受け付け(S605)、待機仮想計算機であった計算機に対して振り分けを開始する(S606)。
運用仮想計算機は、負荷分散装置に新規のみ振り分け停止を依頼し(S706)、残存処理の終了を待機する(S707)。残存処理が終了すると、運用仮想計算機は、負荷分散装置に振り分け停止を依頼し(S708)、救済措置を行なって(S709)、待機状態となる。
負荷分散装置は、運用仮想計算機であった仮想計算機からの新規のみ振り分け停止依頼を受け付けると(S607)、運用仮想計算機であった仮想計算機への新規のみ振り分けを停止する(S608)。その後、運用仮想計算機(A)への振り分け停止依頼を受け付け(S609)、運用仮想計算機(A)への振り分けを停止する(S610)。
図11は、運用仮想計算機と待機仮想計算機の連携についての説明図である。図11に示した例では、5つの仮想計算機A〜Eのうち、仮想計算機A〜Cが初期状態で運用中、仮想計算機D〜Eが初期状態で待機中の場合を示している。また、図中の太線は、運用中であることを、細線は待機中であることを示し、破線は救済措置中であることを示す。
図11に示した例では、まず運用中である仮想計算機Aが第1しきい値による事象検知を仮想計算機B〜Eに同報している。そして、待機中の仮想計算機Dが最初に同報元に応答している。同報元の仮想計算機Aは、最初に応答した仮想計算機Dに対して運用開始を依頼し、救済措置を実行する。依頼を受けた仮想計算機Dは、依頼に対して応答し、運用状態となる。
その後、運用中の仮想計算機Bが第1しきい値による事象検知を仮想計算機A,C〜Eに同報している。そして、待機中の仮想計算Eが同報元に応答している。同報元の仮想計算機Bは、最初に応答した仮想計算機Eに対して運用開始を依頼し、救済措置を実行する。依頼を受けた仮想計算機Eは、依頼に対して応答し、運用状態となる。
さらにその後、運用中の仮想計算機Cが第1しきい値による事象検知を仮想計算機A〜B,D〜Eに同報している。この同報には応答可能な待機仮想計算機が無い。このため、転生処理は保留し、仮想計算機Cは、周期的に第1しきい値による事象検知の同報を繰り返す。その後、第2しきい値を超過しても待機仮想計算機が存在しない場合、同報を中止し、救済措置を開始する。
仮想計算機Cが第2しきい値を超過して救済措置に移行するまでは、待機仮想計算機を運用状態に移行させることで、仮想計算機の運用数3を維持することができている。仮想計算機Cが第2しきい値を超過して救済措置に移行した後は、運用数が2に減少するが、仮想計算機Cの救済措置が完了すると運用状態に復帰するため、運用数は3に戻る。なお、仮想計算機A,Bは、救済措置の完了後に待機仮想計算機となる。
上述してきたように、本実施例1にかかる計算システム1は、運用管理装置なしに、仮想計算機同士で自律的にフェイルオーバー制御(待機仮想計算機に運用を委譲)を行う。また、高負荷状態に達するリスクを減すために、メモリ消費量に2段階のしきい値を設けて性能監視を行っている。そして、システム起動後に、リクエスト数やアプリケーションの実装に応じて、運用または待機仮想計算機を追加または削減することができる。すなわち、プロビジョニングが可能である。
具体的には、計算システム1は、複数の仮想計算機(JavaVM)から構成する情報処理システムであり、運用仮想計算機と待機仮想計算機を用意し、運用中に運用または待機仮想計算機を動的に追加または削減可能である。なお、運用と待機の比率は固定でなくてもよい。
そして、2段階しきい値によるメモリ使用量監視および異常監視を行い、メモリ使用量の増加および異常発生を検知し、負荷分散装置に対して、待機仮想計算機への振り分け開始を依頼する。また、負荷分散装置に対して、運用仮想計算機への新規のみ振り分け停止を依頼し、運用仮想計算機での残存処理が完了するまで待機し、負荷分散装置に対して、運用仮想計算機への振り分けを完全に停止する。そして、運用仮想計算機の資源解放(FullGC)もしくは再起動を行い、運用仮想計算機を待機仮想計算機にする。このとき、運用数によっては、運用仮想計算機に復帰する。
以上の構成と動作によって、計算システム1は、運用管理装置なしに、仮想計算機が自律的に性能監視を行い、仮想計算機同士で直接通信しあってフェイルオーバーを実現する。そのため運用管理装置を用意する場合に比べ、高い精度での監視が可能かつ、運用管理装置との通信コストが削減される効果がある。また、運用管理装置に対する保守作業も削減される効果がある。
さらに、仮想計算機のスペックに応じて、メモリ使用量に2段階のしきい値を設けることができる。第1しきい値を超過したときにフェイルオーバーができた場合には直ちにFullGCを実行し、フェイルオーバーができないまま第2しきい値を超過した場合はフェイルオーバーを行わずにFullGCを実行する。これによりフェイルオーバーの確率が向上し、処理効率が低下しにくいシステム運用を実現できる効果がある。ひいては障害発生率も低下させ安定稼働率を高めることにつながる。
そして、仮想計算機同士で通信し、仮想計算機の情報、運用数と待機数を増加もしくは削減するため、アプリケーション特性やリクエスト数の変化に応じて、システムを停止することなくプロビジョニングを行うことができる。
このように、計算システム1は、ガーベジコレクション実行時におけるアプリケーション処理に負荷を軽減し、仮想計算機を安定して稼働させることができる。
[計算システムの構成]
図12は、実施例2にかかる計算システムの構成図である。また、図13は、図12に示した計算機の構造についての説明図である。図12に示した計算システム2は、負荷分散装置100に計算機2aが接続した構成を有する。また、負荷分散装置100は、ネットワーク120を介して端末群110と接続している。
計算機2aは、コマンド実行処理部90、JMX管理サーバ91、仮想計算機14〜16の機能をソフトウェアによって実現する。コマンド実行処理部90は、JMX管理サーバ91や仮想計算機14〜16に対して各種コマンドに対応する処理を実行させる。このコマンドには、任意の契機にガーベジコレクションの実行を指示する事を可能とするコマンドが含まれる。
JMX管理サーバ91は、アプリ安定稼働サービス部92を備える。アプリ安定稼働サービス部92は、図13に示したように、仮想計算機情報記憶部92aによって仮想計算機の情報を管理するとともに、振り分け制御部93によって仮想計算機14〜16に対する処理の振り分けを管理することで、仮想計算機14〜16を安定して稼働させる。振り分け制御部93には、WebServiceConnector、SessionBean、MessageDrivenBeanが含まれる。
仮想計算機14〜16は、それぞれアプリケーション95、アプリ安定稼働機能部96、JavaVM監視部97を有する。アプリケーション95は、自仮想計算機に振り分けられた計算処理を実行する。アプリ安定稼働機能部96は、計算処理を実行可能な運用状態においてガーベジコレクションの実行を指示された場合に、待機中の他の計算機を運用状態に切り替えて、切り替え完了後にガーベジコレクションを開始する安定稼働処理部として機能する。
アプリ安定稼働機能部96は、MBean処理部96a、イベント処理部96b、救済機能実行部96cを有する。MBean処理部96aは、リソースの管理(JavaVM管理MBean,ユーザクラス実行MBean)を行なって、事象検知時に相当する状態をアプリ安定稼働サービス部92から経由して仮想計算機情報記憶部92aに登録する。また、待機中の際、アプリ安定稼働サービス部92からから運用化するための依頼を受け付け、イベント処理部96bに渡す。
イベント処理部96bは、MBean処理部96aや、JavaVM監視部97からイベントの通知を受け、救済機能実行部96cに救済措置を実行させる。JavaVM監視部97は、JavaVMの予兆監視、アプリケーションのタイムアウト監視、メモリの予兆監視を行なって、イベントが発生した場合にイベント処理部96bに通知する。
[処理動作の説明]
図14は、仮想計算機の起動処理について説明するフローチャートである。仮想計算機はアプリ安定稼働機能の起動時の処理を開始すると、まずJMXポートを開け(S901)、MBeanの登録処理を行なう(S902)。そして、仮想計算機識別子、全プロセス数、設定待機数、プロセス通番、JMXポート番号、Webポート番号、プロセスIDなどをアプリ安定稼働サービスに登録する(S903)。
アプリ安定稼働サービス部は、登録を受けて、仮想計算機識別子とプロセス通番に対応する状態として、STOPを設定する(S904)。
その後、アプリ安定稼働機能は、救済機能実行部、イベント受信部、監視処理用リストの生成および登録を行なう(S905)。そして、図15に示す運用・待機問い合わせ(S906)を行ない、アプリ安定稼働サービス部からの返却値(ACTIVEまたはSTANDBY)を内部の状態として設定する(S907)。以上の手順によって、仮想計算機が起動する(S908)。
図15は、図14に示した運用・待機問い合わせ(S906)について説明するフローチャートである。運用・待機状態の問い合わせ依頼が開始すると、アプリ安定稼働サービス部は、待機状態から運用状態への呼び出しかを判定する(S1001)。
待機状態から運用状態への呼び出しでない場合(S1001,No)、アプリ安定稼働サービス部は、全プロセス数から待機数を引いた数と現在の運用数を比較する(S1002)。
全プロセス数から待機数を引いた数が現在の運用数と同じである場合(S1002,同じ)には、アプリ安定稼働サービス部は、現在のACTIVE状態である全プロセスリストに対象プロセス通番があるかを判定する(S1003)。
待機状態から運用状態にするための呼び出しである場合(S1001,Yes)、全プロセス数から待機数を引いた数が現在の運用数より多い場合(S1002,多い)、また、現在のACTIVE状態である全プロセスリストに対象プロセス通番がある場合、アプリ安定稼働サービス部は、図19に示す振り分け処理を開始する(S1004)。
振り分けの開始に成功すると(S1005,Yes)、アプリ安定稼働サービス部は、仮想計算機情報記憶部へACTIVEを設定し(S1006)、決定状態(ACTIVE)を返却する。
全プロセス数から待機数を引いた数が現在の運用数よりも少ない場合(S1002,少ない)や、運用リストに対象プロセス通番が無かった場合(S1003,No)、アプリ安定稼働サービス部は、図19に示す振り分け処理を停止する(S1007)。
振り分けの停止に成功すると(S1008,Yes)、アプリ安定稼働サービス部は、仮想計算機情報記憶部へSTANDBYを設定し(S1009)、決定状態(STANDBY)を返却する。
振り分けの開始や停止に失敗すると(S1005,No、S1008,No)、アプリ安定稼働サービス部は、状態ABNORMALを設定し例外をスローする(S1010)。その後、救済措置によって当該JavaVMの再起動が行なわれる(S1011)。
図16は、コマンド実行処理部による外部からのFullGC処理について説明するフローチャートである。外部からのFullGC処理では、コマンド実行処理部は、まず指定オプションが正しいかを判定する(S1101)。指定オプションが正しくなければ(S1101,No)、コマンド実行処理部は、Syntaxを出力して(S1111)、異常終了する。
指定オプションが正しい場合(S1101,Yes)、コマンド実行処理部は、仮想計算機識別子を指定してアプリ安定稼働サービスから仮想計算機内の全プロセスの状態情報を取得する(S1102)。このとき、仮想計算機情報記憶部の全JavaVMのFullGCフラグをFalseに設定する。
その後、コマンド実行処理部は、ステップS1103からS1110までの処理を全プロセス分についてループ処理する。
ループ内において具体的には、コマンド実行処理部は、対象プロセスの最新情報を取得し(S1103)、FullGCフラグがTrueかを判定する(S1104)。FullGCフラグがTrueであれば(S1104,Yes)、コマンド実行処理部は、次のプロセスの処理に移る。
FullGCフラグがFalseであれば(S1104,No)、コマンド実行処理部は、状態がACTIVEまたはSTANDBYかを判定する(S1105)。状態がACTIVEまたはSTANDBYでなければ(S1105,No)、コマンド実行処理部は、次のプロセスの処理に移る。
状態がACTIVEまたはSTANDBYであれば(S1105,Yes)、コマンド実行処理部は、JavaVM管理MBeanにFullGCを依頼する(S1106)。このステップS1106は、具体的には、ステップS1112〜S1114の処理を有する。すなわち、JMXポート番号でJMX通信による接続を行ない(S1112)、JavaVMに登録されたJavaVM管理MBeanのオペレーションを呼び出し(S1113)、通信の切断とJMXリソース解放を行なう(S1114)。
ステップS1106の終了後、コマンド実行処理部は、Listenerが呼ばれるまで待機後(S1107,Yes)、FullGCフラグをTrueに設定し(S1108)、コマンド標準出力に結果を出力する(S1109)。コマンド実行処理部は、エラーが発生した場合(S1110,Yes)にはループを抜けて終了し、エラーが発生していなければ(S1110,No)、次のプロセスの処理に移る。そして、コマンド実行処理部は、全てのプロセスについて処理が終了した場合にフローを終える。
図17は、運用中のJavaVMによるFullGC処理について説明するフローチャートである。JavaVM管理MBeanが送信したFullGCイベントは、イベントキューに格納される(S1201)。
イベント処理部は、JavaVMの生存中にループする処理において、イベントキューからFullGCイベントを受信する(S1202)と、救済措置可能状態であり(S1203,Yes)、優先度の高い救済措置が実行中でなければ(S1204,No)、状態をDETECTED_FULLGCに設定し(S1205)、FullGCの依頼を設定する(S1206)。
救済機能実行部は、JavaVMの生存中にループする処理において、イベント処理部からFullGCの依頼をうけると、コマンドによるFullGC依頼(以降、強制FullGCと表す)であるかを判定する(S1207)。強制FullGCであれば(S1207,Yes)、救済機能実行部は、待機中のJavaVMを運用化するようアプリ安定サービス部に依頼する(S1208)。
待機中のJavaVMの運用化は、アプリ安定稼働サービスによって対象として判断された(S1216)、待機中のJavaVMに依頼される(S1221)。運用化の要求を受け付けた待機中のJavaVMは、図25に示すFullGCの実行を行なった後(S1222)、アプリ安定稼働サービスに運用・待機を問い合わせる(S1223)。
アプリ安定稼働サービスは、待機中のJavaVMからの運用・待機の問い合わせを受けて、図15に示した運用・待機決定処理を行なう(S1217)。待機中のJavaVMは、ステップS1217の運用・待機決定処理の結果を受けてACTIVE状態を設定される(S1224)。
運用中のJavaVMの救済機能実行部は、待機中の他のJavaVMが運用化出来ると、自JavaVMへの新規振り分け停止をアプリ安定稼動サービス部に依頼し(S1209)、アプリ安定稼動サービスは、運用中のJavaVMへの新規のみ振り分け停止処理(S1218)を行なう。
新規のみ振り分けの停止後、運用中のJavaVMの救済機能実行部は、アプリケーション終了を待ち合わせ(S1210)、自JavaVMへの振り分け停止をアプリ安定稼動サービス部に依頼する(S1211)。アプリ安定稼動サービスは、依頼を受けて運用中のJavaVMへの振り分け停止処理(S1219)を行なう。
運用中のJavaVMの救済機能実行部は自らの状態をFullGCに設定し(S1212)、FullGCを実行する(S1213)。FullGCの実行後、運用中のJavaVMの救済機能実行部は、アプリ安定稼働サービスに運用・待機を問い合わせる(S1214)。
アプリ安定稼働サービスは、運用中のJavaVMからの運用・待機の問い合わせを受けて、図15に示した運用・待機決定処理を行なう(S1220)。運用中のJavaVMは、ステップS1220の運用・待機決定処理の結果を受けて状態をACTIVEまたはSTANDBYに設定され(S1215)、処理を終了する。
図18は、待機中のJavaVMによるFullGC処理について説明するフローチャートである。JavaVM管理MBeanが送信したFullGCイベントは、イベントキューに格納される(S1301)。
イベント処理部は、JavaVMの生存中にループする処理において、イベントキューからFullGCイベントを受信する(S1302)と、救済措置可能状態であり(S1303,Yes)、優先度の高い救済措置が実行中でなければ(S1304,No)、状態をDETECTED_FULLGCに設定し(S1305)、FullGCの依頼を設定する(S1306)。
救済機能実行部は、JavaVMの生存中にループする処理において、イベント処理部からFullGCの依頼をうけると、強制FullGCであるかを判定する(S1307)。強制FullGCであれば(S1307,Yes)、待機中のJavaVMの救済機能実行部は自らの状態をFullGCに設定し(S1308)、FullGCを実行する(S1309)。FullGCの実行後、待機中のJavaVMの救済機能実行部は、アプリ安定稼働サービスに運用・待機を問い合わせる(S1310)。
アプリ安定稼働サービスは、運用中のJavaVMからの運用・待機の問い合わせを受けて、図15に示した運用・待機決定処理を行なう(S1312)。待機中のJavaVMは、ステップS1312の運用・待機決定処理の結果を受けて状態をACTIVEまたはSTANDBYに設定され、(S1311)、処理を終了する。
図19は、振り分け処理の動作を説明するフローチャートである。振り分け制御部は、振り分け操作対象のJavaVMはWEB専用かを判定する(S1401)。振り分け操作対象のJavaVMがWEB専用であれば(S1401,Yes)、振り分け制御部は、仮想計算機に登録されたWEBサーバを取得(S1402)し、自JavaVMが使用しているWEBサーバか(S1403)の判定を、登録Webサーバインスタンス分、および登録Webサーバ分、ループする。
振り分け制御部は、自JavaVMが使用しているWEBサーバであればループを抜けた後、振り分けモードを判定し(S1404)、振り分けモードがONであれば振り分けを開始し(S1405)、振り分けモードがOFFであれば振り分けを停止する(S1406)。そして、振り分けモードがOFF_NEWであれば、新規のみ振り分けを停止して(S1407)、処理を終了する。
一方、振り分け操作対象のJavaVMがWEB専用でない場合(S1401,No)、振り分け制御部は、振り分けモードを判定し(S1408)、振り分けモードがONであれば振り分けを開始し(S1409)、振り分けモードがOFFであれば振り分けを停止する(S1410)。そして、振り分けモードがOFF_NEWであれば、新規のみ振り分けを停止して(S1411)、処理を終了する。
図20は、JavaVMの状態遷移図と振り分け状態の説明図である。JavaVMは、起動されるとアプリ安定サービスによってSTOP状態に設定され、運用中を示すACTIVEと待機中を示すSTANDBYのいずれかの状態をとる。STANDBYの状態から運用化されると、ACTIVEとなる。
ACTIVE状態でFullGC依頼を受けると、ACTIVE状態から事象を検知したことを示すDETECTED_FULLGC状態となる。その後、DETECTED_FULLGCからFullGC実行中であることを示すFULLGC状態に移行し、FullGCの完了後に運用中を示すACTIVEと待機中を示すSTANDBYのいずれかの状態をとる。
また、ACTIVE状態でプロセス停止依頼を受けると、ACTIVE状態から事象を検知したことを示すDETECTED_STOP状態となる。その後、プロセスを停止してSTOP状態となる。
また、各状態で異常が発生するとJavaVMは、異常検知を示すABNORMAL状態となる。
振り分け状態は、ON、OFF_NEW、OFFのいずれかの状態をとる。振り分け状態ONではJavaVMはリクエストを受け付ける。振り分け状態OFF_NEWではJavaVMは新規のみリクエストを受け付けない。そして、振り分け状態OFFではJavaVMはリクエストを受け付けない。
図21は、仮想計算機情報記憶部が保持するデータの具体例である。仮想計算機情報記憶部が保持するHashMapは、仮想計算機識別子と対象オブジェクトの項目を関連付けて有する。図21の例では、仮想計算機識別子1〜3を登録している。そして、仮想計算機識別子1に対応する保持オブジェクトはJavaBeans1_1、仮想計算機識別子2に対応する保持オブジェクトはJavaBeans1_2、仮想計算機識別子3に対応する保持オブジェクトはJavaBeans1_3である。
JavaBeans1_1は、仮想計算機識別子、起動プロセス数、タイプ、待機プロセス数、Mapオブジェクトの項目を有する。仮想計算機識別子、起動プロセス数、タイプ、待機プロセス数、Mapオブジェクトの項目を有する。図21の例では、仮想計算機識別子には「仮想計算機1」、起動プロセス数には「3」、タイプには「WEB/EJB」、待機プロセス数には「1」、Mapオブジェクトには「JavaBeans2_1」が登録されている。
また、JavaBeans1_1のMapオブジェクトとして保持しているJavaBeans2_1は、プロセス通番、JMXポート番号、プロセスID、Webポート番号、状態、FullGCフラグの項目を有する。図21に示した例では、プロセス通番「1」には、JMXポート番号「20001」、プロセスID「29358」、Webポート番号「8421」、状態「ACTIVE」、FullGCフラグ「False」が登録されている。また、プロセス通番「2」には、JMXポート番号「20002」、プロセスID「29359」、Webポート番号「8422」、状態「ACTIVE」、FullGCフラグ「False」が登録されている。そして、プロセス通番「3」には、JMXポート番号「20003」、プロセスID「29361」、Webポート番号「8423」、状態「STANDBY」、FullGCフラグ「False」が登録されている。
図22は、アプリケーション終了の待ち合わせ処理について説明するフローチャートである。アプリケーション終了の待ち合わせ処理では、運用中のJavaVMは、状態がSTANDBYまたはABNORMALかを判定する(S1501)。状態がSTANDBYまたはABNORMALである場合(S1501,Yes)、運用中のJavaVMは、アプリケーション終了の待ち合わせ処理を終了する。
状態がSTANDBYやABNORMALではない場合(S1501,No)、運用中のJavaVMは、実行中のアプリケーション中で最後に開始したアプリケーションの開始時刻をlastStartAppTimeとして取得する(S1502)。ここで最後に開始したアプリケーションが終了していた場合―1が返却され、lastStartAppTimeに設定される。
運用中のJavaVMは、フラグが最初に設定されたOFFのままかlastStartAppTimeが0以上である間(S1503)、ループ処理を繰り返す。具体的には、1秒スリープし(S1504)、実行中のアプリケーション中で最後に開始したアプリケーションの開始時刻をlastStartAppTimeとして取得する(S1505)。
そして、lastStartAppTimeが−1かつフラグがOFFであるかを判定する(S1506)。lastStartAppTimeが−1かつフラグがOFFである場合(S1506,Yes)、運用中のJavaVMは、振り分けをOFFに設定し、フラグをONにする(S1507)。そして、3秒スリープし(S1508)、ループを抜けて処理を終了する。
一方、lastStartAppTimeが−1かつフラグがOFFでない場合(S1506,No)、運用中のJavaVMは、タイムアウトを超過していれば(S1509,Yes)、ループを抜けて処理を終了し、タイムアウトを超過していなければ(S1509,No)、ループを継続する。
図23は、待機JavaVMの運用化依頼処理について説明するフローチャートである。運用中のJavaVMは、待機JavaVMの運用化依頼を行なう場合、instanceNoに−1を設定する(S1601)。そして、多重度が2未満であるか(S1602)、自JavaVMの状態がSTANDBYかABNORMALであるかを判定する(S1603)。多重度が2未満である場合(S1602,Yes)や、STANDBYかABNORMALである場合(S1603,Yes)、運用中のJavaVMは、処理を終了する。
多重度が2未満でなく(S1602,No)、自JavaVMの状態がSTANDBYかABNORMALでない場合(S1603,No)、運用中のJavaVMは、instanceNoが−1の間、アプリ安定稼動サービス部による処理を繰り返し呼び出す。この結果、運用化できた、または不要になった場合(S1604,Yes)に処理を終了する。運用化できておらず、不要にもなっていない場合(S1604,No)、1秒スリープして(S1605)、ループ処理をつづける。ループから抜けた場合には、運用JavaVMは他の待機JavaVMの運用化依頼処理を終了する。
アプリ安定稼動サービス部は、resultに−1を設定し(S1606)、状態がACTIVEとFULLGCの数が多重度に等しいかを判定する(S1607)。状態がACTIVEとFULLGCの数が多重度に等しい場合(S1607,Yes)、アプリ安定稼動サービス部は、運用中のJavaVMに運用化が不要であることを示す−2を返して(S1615)、処理を終了する。
状態がACTIVEとFULLGCの数が多重度に等しくない場合(S1607,No)、アプリ安定稼動サービス部は、多重度から設定待機数を引いた値がACTIVE数よりも大きいかを判定する(S1608)。多重度から設定待機数を引いた値が現在のACTIVE数以下である場合(S1608,No)、アプリ安定稼動サービス部は、運用中のJavaVMに運用化が不要であることを示す−2を返して(S1615)、処理を終了する。
多重度から設定待機数を引いた値がACTIVE数よりも大きいか場合(S1608,Yes)、アプリ安定稼動サービス部は、ステップS1609〜S1613の処理を全JavaVM分ループする。
すなわち、アプリ安定稼動サービス部は、呼び出したJavaVM自身ではなく(S1609,No)、状態がSTANDBYである(S1610,Yes)JavaVMについて、待機JavaVMへのACTIVE化の指示を行なう(S1611)。そして、図15に示した運用・待機決定処理(S1612)を行なって、運用化された場合(S1613,Yes)には運用化されたJavaVMのプロセス通番を返却して(S1614)、処理を終了する。
図24は、FullGC実行時のJavaVMと振り分け状態の遷移についての説明図である。図24において、初期状態では、プロセス通番「1」についてJavaVM状態が「ACTIVE」、振り分け状態が「ON」となっている。また、プロセス通番「2」についてJavaVM状態が「STANDBY」、振り分け状態が「OFF」となっている。同様に、プロセス通番「3」についてJavaVM状態が「STANDBY」、振り分け状態が「OFF」となっている。そして、プロセス通番「4」についてJavaVM状態が「ACTIVE」、振り分け状態が「ON」となっている。
この状態からFullGCを受け付けると、まずプロセス通番「1」のJavaVM状態が「DETECTED_FULLG」となる。そして、待機状態であったプロセス通番「2」が運用化され、プロセス通番「2」のJavaVM状態が「ACTIVE」、振り分け状態が「ON」となる。
その後、プロセス通番「1」について新規のみ振り分けが停止し、プロセス通番「1」の振り分け状態が「OFF_NEW」となる。さらに、アプリケーション終了を待って振り分けを停止することで、プロセス通番「1」の振り分け状態が「OFF」となる。
そして、プロセス通番「1」はFullGCを開始してJavaVM状態が「FULLGC」となる。FullGC終了後、プロセス通番「1」は運用・待機決定処理によって待機化され、JavaVM状態が「STANDBY」となる。そして、2つ目、すなわちプロセス通番「2」のJavaVMのFullGC処理に移行する。
図25は、待機JavaVMを運用化した際のFullGC処理について説明するフローチャートである。具体的には、FullGCを実行すると(S1701)、FullGCフラグをTrueに設定する(S1702)。通常JavaVMは1時間に1回など、定期的にFullGCが走るようになっている。これに対し、実施例2のシステムでは、Java自身が自動で勝手に行わないようにFullGCの実行を制限している。また、STANDBYの状態で全く振り分けられない状態であっても一定時間以上経過すると、RMI等のリソースを使用し続けるため、ACTIVE化の際には、必ずFullGCを行なうように実装している。
上述したように実施例2にかかる計算システム2は、FullGCを受け付けたJavaVMが、新規のみ振り分け停止、アプリケーション終了待ち、振り分け停止を行なう。その後、FullGCが実行される事でFullGCを受け付けた前後にリクエストされたアプリケーションの実行を保証する。
また、FullGCを受け付けたJavaVMの代わりに、待機用に設定された他のJavaVMを運用化させる仕組みを有する。そして、待機JavaVMが複数存在している時には、どれを運用化させるか判断する仕組みと、同じJavaVMに対して何度もFullGCを行わない仕組みを有する。すなわち、待機中にFullGCを行なえば、FullGCフラグがTrueとなり、待機状態から運用状態に変更する際のFullGCをスキップすることができる。
このため、実施例2にかかる計算システム2では、仮想計算機上で設定数分のJavaVMが起動され、1つ以上の待機JavaVMを設定しておくことにより、FullGCを実行した場合でも運用JavaVM数は常に保たれる。かつ、FullGCを行う際に、処理中のアプリケーションが存在する場合は完了するまで待機を行い、一つずつ順番に処理を行っていくため、リクエストに対するスループットは低下することなく、全てのJavaVMに対して資源解放処理が実施されることになる。
したがって、実施例2に開示した構成および動作によって、ガーベジコレクション実行時におけるアプリケーション処理の負荷を軽減することができる。
1〜3 計算システム
1a,1b,1c,3a 計算機
11〜16,71〜73 仮想計算機
21〜23,95 アプリケーション
31〜33 監視エージェント
41〜43 安定稼働エージェント
51〜53 情報記憶部
61 事象検知イベント受信部
62 救済措置実行部
81 オペレーティングシステム
82 実行環境プログラム
90 コマンド実行処理部
91 管理サーバ
92 アプリ安定稼働サービス部
92a 仮想計算機情報記憶部
93 振り分け制御部
96 アプリ安定稼働機能部
96a MBean処理部
96b イベント処理部
96c 救済機能実行部
97 JavaVM監視部
100〜103 負荷分散装置
110 端末群
120 ネットワーク
130 運用管理装置

Claims (5)

  1. 複数の計算機に計算処理を配分する計算システムであって、
    ガーベジコレクションまたは計算機の再起動の実行を指示する実行指示部を備え、
    計算処理を実行可能な運用状態の計算機は、
    ガーベジコレクションまたは計算機の再起動の実行を指示された場合に、待機中の他の計算機が存在すれば、前記待機中の他の計算機に運用開始を依頼し、前記複数の計算機に計算処理を配分する負荷分散装置に対して、ガーベジコレクションまたは計算機の再起動の実行を指示された計算機に対する新規リクエストの計算処理の振り分け停止を依頼する第1の依頼部と、
    処理中のリクエストに対する残存処理が終了した場合、前記負荷分散装置に対して、前記ガーベジコレクションまたは計算機の再起動の実行を指示された計算機に対する全リクエストの計算処理の振り分け停止を依頼する第2の依頼部と
    を有することを特徴とする計算システム。
  2. 前記実行指示部は、前記計算処理が配分される前記複数の計算機とは異なる計算機に設けられることを特徴とする請求項1に記載の計算システム。
  3. 前記複数の計算機は、オペレーティングシステムで動作する仮想計算機であり、前記オペレーティングシステム上に複数実行可能であることを特徴とする請求項1または2に記載の計算システム。
  4. 前記負荷分散装置は、前記ガーベジコレクションまたは計算機の再起動の実行を指示された計算機からの新規リクエストの計算処理の振り分け停止の依頼に応じて、当該計算機に対する新規リクエストの計算処理の振り分けを停止し、前記新規リクエストの計算処理を他の計算機に振り分け、前記ガーベジコレクションまたは計算機の再起動の実行を指示された計算機から、前記ガーベジコレクションまたは計算機の再起動の実行を指示された計算機から全リクエストの計算処理の振り分け停止を依頼された場合に、当該計算機に対して全リクエストの計算処理の振り分けを停止することを特徴とする請求項1〜3のいずれか1つに記載の計算システム。
  5. 複数の計算機に計算処理を配分する計算システム管理方法であって、
    実行指示部が、ガーベジコレクションまたは計算機の再起動の実行を指示し、
    計算処理を実行可能な運用状態の計算機が、
    ガーベジコレクションまたは計算機の再起動の実行を指示された場合に、待機中の他の計算機が存在すれば、前記待機中の他の計算機に運用開始を依頼し、前記複数の計算機に計算処理を配分する負荷分散装置に対して、ガーベジコレクションまたは計算機の再起動の実行を指示された計算機に対する新規リクエストの計算処理の振り分け停止を依頼し、
    処理中のリクエストに対する残存処理が終了した場合、前記負荷分散装置に対して、前記ガーベジコレクションまたは計算機の再起動の実行を指示された計算機に対する全リクエストの計算処理の振り分け停止を依頼する
    処理を実行することを特徴とする計算システム管理方法。
JP2015231122A 2015-11-26 2015-11-26 計算システムおよび計算システム管理方法 Expired - Fee Related JP6004075B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015231122A JP6004075B2 (ja) 2015-11-26 2015-11-26 計算システムおよび計算システム管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015231122A JP6004075B2 (ja) 2015-11-26 2015-11-26 計算システムおよび計算システム管理方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010267658A Division JP5845571B2 (ja) 2010-11-30 2010-11-30 計算システムおよび計算システム管理方法

Publications (2)

Publication Number Publication Date
JP2016042385A JP2016042385A (ja) 2016-03-31
JP6004075B2 true JP6004075B2 (ja) 2016-10-05

Family

ID=55592066

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015231122A Expired - Fee Related JP6004075B2 (ja) 2015-11-26 2015-11-26 計算システムおよび計算システム管理方法

Country Status (1)

Country Link
JP (1) JP6004075B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4649341B2 (ja) * 2006-01-24 2011-03-09 株式会社日立製作所 計算機制御方法、情報処理システムおよび計算機制御プログラム
JP2007328413A (ja) * 2006-06-06 2007-12-20 Hitachi Ltd 負荷分散方法

Also Published As

Publication number Publication date
JP2016042385A (ja) 2016-03-31

Similar Documents

Publication Publication Date Title
JP5845571B2 (ja) 計算システムおよび計算システム管理方法
US10628273B2 (en) Node system, server apparatus, scaling control method, and program
KR102524540B1 (ko) 멀티 클라우드 서비스 플랫폼 장치 및 방법
US9208029B2 (en) Computer system to switch logical group of virtual computers
US7853835B2 (en) Cluster system wherein failover reset signals are sent from nodes according to their priority
CA2467813C (en) Real composite objects for providing high availability of resources on networked systems
CN106302565B (zh) 业务服务器的调度方法及系统
JP5000456B2 (ja) 資源管理システム、資源管理装置およびその方法
CA3168286A1 (en) Data flow processing method and system
JP2001331333A (ja) 計算機システム及び計算機システムの制御方法
CN106790092B (zh) 远程过程调用服务端控制系统及方法
EP3588852A1 (en) Method, apparatus and system for managing network slice instance
JP2010267009A (ja) ライセンス管理システム、ライセンス管理方法及びコンピュータプログラム
WO2019199449A1 (en) Deployment of services across clusters of nodes
CN112948063B (zh) 云平台的创建方法、装置、云平台以及云平台实现系统
CN114996352B (zh) 数据库管理系统及方法
WO2021053224A1 (en) Providing optimization in a micro services architecture
JP2017027367A (ja) 画像形成装置、リソース管理装置、リソース管理方法、画像形成装置およびプログラム
JP6004075B2 (ja) 計算システムおよび計算システム管理方法
CN110149352A (zh) 一种业务请求处理方法、装置、计算机设备和存储介质
US10001939B1 (en) Method and apparatus for highly available storage management using storage providers
JP5610773B2 (ja) メッセージ処理装置およびメッセージ処理方法
JP6700552B2 (ja) 処理制御プログラム、処理制御装置及び処理制御方法
WO2021072967A1 (zh) 一种配置信息管理方法及装置
CN119854233B (zh) 一种云平台主机节点调度系统、方法和电子设备

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160822

R150 Certificate of patent or registration of utility model

Ref document number: 6004075

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees