(57)【要約】      （修正有）【課題】計算機の高負荷状態検出時、他計算機へ処理の移設を行う際、高負荷状態が時間経過に伴い軽減される計算機を提供する。【解決手段】業務処理部は、リクエスト受け付けて、前記リクエストに基づいて処理し、CPU利用率取得処理部は定期的にCPU利用率を取得し、CPU利用率記憶部は、前記取得した前記CPU利用率を格納し、中断処理部はCPU利用率監視及び定められた値に従いプロセスを中断し、設定情報部は、前記CPU利用率の閾値情報及び中断情報を格納し、プロセス中断処理部は、前記CPU利用率が閾値以上となり、高負荷状態を検出した場合、定められた値に従いプロセスを中断する事で高負荷状態を軽減する。【選択図】図１
2013134636.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備えた複数の計算機がネットワークに接続され、ロードバランサを経由し、クライアント端末からのリクエストを受ける計算機を備えた計算機負荷制御方法において、
業務処理部は、前記リクエスト受け付けて、前記リクエストに基づいてプロセスを実行し、
設定情報部は、前記記憶装置に備えた前記CPU利用率の閾値情報を格納し、
CPU利用率取得処理部は、定期的に前記計算機のCPU利用率を取得し、
CPU利用率記憶部は、前記取得したCPU利用率を前記記憶装置に格納し、
中断処理部は、前記プロセスを中断し、
プロセス中断処理部は、前記格納したCPU利用率が閾値以上となり、高負荷状態を検出した場合、前記中断処理部により前記閾値以上のプロセスを中断する事で高負荷状態を軽減する
ことを特徴とする計算機負荷制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の計算機からなる計算機システムにおける計算機の負荷制御技術に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、特許文献１に開示されている。特許文献１には、ネットワークに接続された複数のサーバの負荷を監視し、サーバ間の負荷分散を行う負荷分散装置であって、負荷が予め定められた閾値以上のサーバを検出した場合、前記サーバに登録されているがセッション接続がないユーザ端末が存在する場合、前記ユーザ端末の登録を、負荷が前記閾値以上の前記サーバから、負荷が前記閾値よりも小さい他のサーバに変更する方式が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２３７９３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記特許文献１に開示されているような技術では、計算機において高負荷状態を検出した際、高負荷状態ではない計算機へ処理の移設を行う事は出来るが、高負荷状態を検出した計算機における高負荷状態を軽減するといった制御は行っていない。
【０００５】
そこで、本発明の目的は、計算機の高負荷状態を検出した際の負荷を制御する方法を提供する。例えば、閾値を超える高負荷状態を検出した場合、定められた値に従いプロセスを中断し、計算機の負荷を軽減させることにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、「ネットワークに接続され、ロードバランサを経由し、クライアント端末からのリクエストを受ける計算機において、リクエスト受けて動作する業務処理部と、定期的にCPU利用率を取得するCPU利用率取得処理部と、取得したCPU利用率を格納するCPU利用率記憶部とCPU利用率監視及び定められた値に従いプロセスを中断する中断処理部と、CPU利用率の閾値情報及び中断情報が格納された設定情報部を有し、CPU利用率が閾値以上となり、高負荷状態を検出した場合、定められた値に従いプロセスを中断する事で高負荷状態を軽減することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、計算機の高負荷状態が継続するような状況において、定めれた値に従い、動作中の業務プロセスを中断する事で高負荷状態を軽減する事が出来る。
【図面の簡単な説明】
【０００８】
【図１】計算機の負荷制御を行う為の構成図である。
【図２】設定情報部のCPU利用率閾値情報の構成を示す一例である。
【図３】設定情報部の中断対象プロセスリストの構成を示す一例である。
【図４】設定情報部のプロセス中断情報の構成を示す一例である。
【図５】CPU利用率記憶部のシステム全体のCPU管理TABLEの構成を示す一例である。
【図６】CPU利用率記憶部のプロセス単位のCPU管理TABLEの構成を示す一例である。
【図７】CPU利用率取得処理部の処理を説明するシーケンスである。
【図８】中断処理部のCPU利用率監視処理部の処理を説明するフローチャートである。
【図９】中断処理部のプロセス中断処理部の処理を説明するフローチャートである。
【発明を実施するための形態】
【実施例１】
【０００９】
以下、本発明を実施する為の形態について図面を用いて詳細に説明する。
図１は、本発明における計算機負荷制御方法の全体構成を示す構成図である。計算機１０６は、CPU１０７、メモリ１０８、ディスク１２０で構成され、ネットワーク１０２（１０５）を通じて、ロードバランサ１０３、クライアント端末１０１、管理端末１０４に接続する。ロードバランサ１０３は、複数ある計算機１０６へクライアント端末１０１からのリクエストを負荷分散させる為に用いる。また、管理端末１０４は負荷制御を行う為の設定情報を複数ある計算機１０６へ転送する為に用いる。
【００１０】
CPU１０７は、計算機１０６を動作させる上で必要となる中央演算処理装置である。ディスク１２０には、設定情報部１２１を有する。設定情報部１２１は、CPU利用率閾値情報１２２、中断対象プロセスリスト１２３、プロセス中断情報１２４で構成される。メモリ１０８には、OS１０９、業務処理部１１０、CPU利用率取得処理部１１１、CPU利用率記憶部１１４、中断処理部１１７を有する。
【００１１】
CPU利用率取得部１１１は、システム全体取得処理部１１２、プロセス単位取得処理部１１３とで構成される。また、CPU利用率記憶部１１４は、システム全体のCPU管理TABLE１１５、プロセス単位のCPU管理TABLE１１６とで構成される。また、中断処理部１１７は、CPU利用率監視処理部１１８、プロセス中断処理部１１９とで構成される。
【００１２】
前記した構成における負荷制御方法の概要を次に説明する。ネットワーク１０２（１０５）に接続されたクライアント端末１０１からのリクエストはロードバランサ１０３を経由し計算機１０６へ負荷分散して送られる。リクエストを受けた計算機１０６では、クライアント端末１０１から送られたリクエストを処理する業務処理部１１０が動作し、処理結果をクライアント端末１０１へ応答する。通常はこのような動作になるが、処理するデータ量の違いといった業務処理部１１０が動作する条件の差異により、CPU１０７のCPU利用率を多量に消費するようなケースがあった場合、その計算機１０６において高負荷状態になる可能性がある。
【００１３】
負荷制御を行う場合は、ネットワーク１０２に接続された管理端末１０４から各計算機１０６に、設定情報を転送し、ディスク１２０に格納する。設定情報がディスク１２０に格納されると、ロードバランサ１０３を経由するクライアント端末１０１からのリクエストを受け付けられるようになり、業務プロセスが動作する。業務プロセスが動作すると、システム全体取得処理部１１２は、OS１０９を経由してシステム全体のCPU利用率を1秒間隔で取得し、取得したCPU利用率の情報をシステム全体のCPU管理TABLE１１５に格納する。プロセス単位取得処理部１１３は、OS１０９を経由して、プロセス単位のCPU利用率６０３とPID６０２を1秒間隔で取得し、その取得したCPU利用率６０３とPID６０２をプロセス単位のCPU管理TABLE１１６に格納する。
【００１４】
システム全体のCPU管理TABLE１１５、プロセス単位のCPU管理TABLE１１６はメモリテーブルであり、前記のシステム全体取得処理部１１２、プロセス単位取得処理部１１３が取得した情報が格納される。
【００１５】
CPU利用率監視処理部１１８は、1秒間隔で、システム全体のCPU管理TABLE１１５を参照し、CPU利用率閾値情報１２２の値と比較する事で、CPU利用率５０１が閾値２０１以上かを確認する。システム全体のCPU管理TABLE１１５のCPU利用率５０１が閾値２０１以上の場合、プロセス中断処理部１１９が呼び出される。呼び出されたプロセス中断処理部１１９は、プロセス中断情報１２４、プロセス単位のCPU管理TABLE１１６を参照し、定められた値に従い、業務処理部１１０で動作するプロセスを中断する。
【００１６】
業務処理部１１０のプロセスを中断した場合、そのプロセスが処理していたクライアント端末１０１から送られたリクエストはエラーになってしまうが、ロードバランサ１０３がタイムアウトを検出する事で、クライアント端末１０１へエラーを返さず、他計算機１０６へリクエストを再送する。このように負荷制御する事で、高負荷状態時における負荷を軽減し、クライアント端末１０１からのリクエストをエラーとせず再送する。
【００１７】
各処理部は、プログラムやオブジェクトで実現する場合、CPU１０７でそれらを実行させることで、各処理部の機能を実現する。また、各処理部について同じ機能をハードウェアで実現することも可能である。
【００１８】
次に負荷制御を行う上で参照する設定情報とテーブルについて説明する。
【００１９】
図２は、設定情報部１２１のCPU利用率閾値情報１２２の構成内容を示す図である。CPU利用率閾値情報１２２の閾値２０１のみ保持し、閾値２０１にはシステム全体のCPU利用率に対する閾値２０１を登録する。閾値２０１は、CPU利用率監視処理部１１８がプロセス中断処理部１１９を呼び出す判定情報として使用する。なお、図２は、閾値２０１に80％を指定した例である。
【００２０】
また、閾値２０１を決定する際は、事前にシステムの運用状態を確認し平常時のシステム全体のCPU利用率の情報をOS１０９のCPU利用率取得コマンドで確認し、平常時を超える値を閾値２０１に設定する。
【００２１】
図３は、設定情報部１２１の中断対象プロセスリスト１２３の構成内容を示す図である。中断対象プロセスリスト１２３は、プロセス名３０１と閾値３０２のカラムで構成され、プロセス名３０１には中断対象となるプロセスの名称を１つ以上登録する。閾値３０２には、各プロセス名ごとのプロセス単位のCPU利用率の閾値３０２を登録する。登録情報は、プロセス中断処理部１１９がプロセスを中断する際の判定情報として使用する。
【００２２】
なお、図３は、プロセス名３０１にプロセスA、B〜Zを指定し、閾値３０２にそれぞれ20、30、10を指定３０３した例である。登録するプロセス名は、業務処理部１１０で動作するプロセス名を登録する。
【００２３】
また、プロセス単位の閾値３０２を決定する際は、事前にクライアント端末１０１からリクエストを受け業務処理部１１０が動作している状態において、各プロセスのCPU利用率をOS１０９のCPU利用率取得コマンドを用いて確認し、平常時を超える値を閾値３０２に設定する。
【００２４】
図４は、設定情報部１２１のプロセス中断情報１２４の構成内容を示す図である。プロセス中断情報１２４は、プロセス中断処理部１１９がプロセスを中断する際の判定情報として使用する。登録する情報は、CASE1(４０１)、CASE2(４０２)、CASE3(４０３)の3種類があり、CASE1(４０１)は中断対象プロセスリスト１２３の閾値３０２以上のCPU利用率６０３のプロセスを中断する、CASE2(４０２)は中断対象プロセスリスト１２３の閾値３０２に対して設定した割合以上のCPU利用率となっているプロセスを中断する、CASE3(４０３)は、中断対象プロセスリスト１２３に登録されているプロセス全てを中断する意味を有する。設定時、CASE1(４０１)、CASE2(４０２)、CASE3(４０３)のいずれかを登録する。なお、CASE2(４０２)を登録する場合、CASE2(４０２)と記述した後に「｜割合の数値」を記述し登録する。
【００２５】
例えば、中断対象プロセスリスト１２３のあるプロセスの閾値３０２が80％が登録されている状態で、あるプロセスのCPU利用率が50％以上となったプロセスを中断する場合、「CASE2|7」のように登録する。このように登録する事で、CPU利用率５６（８×７）％以上のプロセスが中断対象となる。
【００２６】
また、CASE1(４０１)、CASE2(４０２)、CASE3(４０３)を決定する際は、システムの運用として何が重点項目かによって決定する。必要最小限のプロセスのみ中断して高負荷状態を軽減する場合、CASE1(４０１)を登録する。閾値３０２に近づきつつあるプロセス含めてプロセスを中断し高負荷状態を軽減する場合、CASE2(４０２)を登録する。高負荷状態の軽減が優先の場合、CASE3(４０３)を登録する。
【００２７】
図５は、CPU利用率記憶部１１４のシステム全体のCPU管理TABLE１１５の構成内容を示す図である。システム全体のCPU管理TABLE１１５は、CPU利用率５０１のみ保持し、システム全体取得処理部１１２が定期的に取得したシステム全体のCPU利用率を登録する。登録した情報は、CPU利用率監視処理部１１８がプロセス中断処理部１１９を呼び出す判定情報として使用する。なお、図５は、CPU利用率に85％が登録されている例である。  
【００２８】
図６は、CPU利用率記憶部１１４のプロセス単位のCPU管理TABLE１１６の構成内容を示す図である。プロセス単位のCPU管理TABLE１１６は、プロセス名６０１とPID６０２とCPU利用率６０３のカラムで構成され、プロセス名６０１には、中断対象プロセスリスト１２３の情報を登録する。PID６０２には、プロセス単位取得処理部１１３が定期的に取得した、中断対象プロセスリスト１２３のプロセス名３０１の現在のPID６０２を登録する。CPU利用率６０３には、プロセス単位取得処理部１１３が定期的に取得した中断対象プロセスが使用しているCPU利用率６０３を登録する。なお、図６は、プロセス名にプロセスA、B〜Z、PIDに1001、1002〜1026、CPU利用率にそれぞれ10、40〜3が登録されている例である。
【００２９】
次に計算機負荷制御方法の各種処理について説明する。
【００３０】
図７は、CPU利用率取得処理部１１１の動作を示すシーケンス図である。ステップS701において、システム全体のCPU利用率取得部１１２は、OS１０９のCPU利用率取得コマンドを用いてシステム全体のCPU利用率５０１を取得する。取得後、ステップS702において、システム全体取得処理部１１２は、システム全体のCPU管理TABLE１１５にシステム全体のCPU利用率５０１を登録する。
【００３１】
ステップS703において、プロセス単位取得処理部１１３はOS１０９のCPU利用率取得コマンドを用いて、プロセス単位のCPU利用率６０３とPID６０２を取得する。取得時、中断対象プロセスリスト１２３に登録されているプロセスA、B〜Zの名称をOS１０９の情報抽出コマンドを用いて絞り込み、必要な情報のみを取得する。
【００３２】
ステップS704において、プロセス単位取得処理部１１３は、プロセス単位のCPU管理TABLE１１６に中断対象プロセスごとのCPU利用率６０３とPID６０２を登録する。CPU利用率取得処理部１１１では、ステップS701、S702、S703、S704の動作を1秒間隔で行い、システム全体、中断対象プロセス、それぞれのCPU利用率５０１とCPU利用率６０３とPID６０２を定期的に取得し、CPU利用率記憶部１１４に登録する。 
PIDを初回だけでなく、CPU利用率と合わせて定期的に取得するのは、そのプロセスが再起動し、PID６０２が変更されている可能性を考慮する為である。
【００３３】
図８は、CPU利用率監視処理部１１８の処理を示すフローチャートである。ステップS801において、CPU利用率監視処理部１１８は、システム全体のCPU管理TABLE１１５のCPU利用率５０１を参照し、CPU利用率閾値１２２の閾値２０１の値と比較を行う。ステップS802において、システム全体のCPU管理TABLE１１５のCPU利用率５０１がCPU利用率閾値１２２の閾値２０１の値以上の場合、ステップS803において、プロセス中断処理部１１９を呼び出す。
【００３４】
システム全体のCPU管理TABLE１１５のCPU利用率５０１がCPU利用率閾値１２２の閾値２０１の値未満の場合、ステップS801、S802の処理を1秒間隔で繰返し行う。なお、図８の例の場合、図２の閾値２０１以上となっている為、プロセス中断対象処理部１１９を呼び出す。
【００３５】
図９は、中断処理部１１７のプロセス中断処理部１１９の処理を示すフローチャートである。ステップS901において、プロセス中断処理部１１９は、プロセス中断情報１２４を参照する。参照後、ステップS902において、プロセス中断情報１２４に従い処理が分岐する。
【００３６】
CASE1(４０１)の場合、ステップS903において、プロセス単位のCPU管理TABLE１１６のCPU利用率６０３と中断対象プロセスリスト１２３の閾値３０２に対して、同一プロセス名の情報を比較する。ステップS904において、比較した結果を評価し、プロセス単位のCPU管理TABLE１１６のCPU利用率６０３が中断対象プロセスリスト１２３の閾値３０２以上の場合、ステップ905において、そのプロセス名６０１に対応したPID６０２に対して、OS１０９のプロセス中断コマンドを用いてプロセスを中断する。中断後、ステップ906において、現在処理しているプロセス数をカウントアップし、ステップ907において、プロセス数分繰返したかを判定する。
【００３７】
プロセス単位のCPU管理TABLE１１６のCPU利用率６０３が中断対象プロセスリスト１２３の閾値３０２未満の場合、ステップ906において、現在処理しているプロセス数をカウントアップし、ステップ907において、プロセス数分繰返したかを判定する。
【００３８】
プロセス数分繰返した場合、中断処理を終了する。プロセス数分繰返していない場合、ステップS903、S904、S905、S906、S907を繰返し実行する。図３と図６のように情報が登録されていた場合、プロセスA、Zは中断せず、プロセスBのみを中断する。このようにCPU利用率が閾値３０２以上のプロセスを中断する事で、計算機１０６の高負荷状態を軽減することができる。
【００３９】
CASE2(４０２)の場合、ステップS908において、プロセス単位のCPU管理TABLE１１６のCPU利用率６０３と中断対象プロセスリスト１２３の閾値３０２に対して、同一プロセス名の情報を比較する。ステップS909において、比較した結果を評価し、プロセス単位のCPU管理TABLE１１６のCPU利用率６０３が中断対象プロセスリスト１２３の閾値３０２に対して設定した割合以上の場合、ステップ910において、そのプロセス名６０１に対するPID６０２に対してOS１０９のプロセス中断コマンドを用いてプロセスを中断する。中断後、ステップ911において、現在処理しているプロセス数をカウントアップし、ステップ912において、プロセス数分繰返したかを判定する。
【００４０】
プロセス単位のCPU管理TABLE１１６のCPU利用率６０３が中断対象プロセスリスト１２３の閾値３０２に対して設定した割合未満の場合、ステップ911において、現在処理しているプロセス数をカウントアップし、ステップ912において、プロセス数分繰返したかを判定する。
【００４１】
プロセス数分繰返した場合、中断処理を終了する。プロセス数分繰返していない場合、ステップS908、S909、S905、S910、S911を繰返し実行する。
【００４２】
なお、閾値の設定した割合が5割と仮定し、図３と図６のように情報が登録されている場合、プロセスZは中断せず、プロセスA、Bを中断する。このように閾値３０２以上またはプロセス中断情報１２４に設定した割合４０２以上のプロセスが停止する事で、計算機１０６の高負荷状態を軽減することができる。
【００４３】
CASE3(４０３)の場合、ステップS913において、プロセス単位のCPU管理TABLE１１６を参照し、登録されているプロセス名６０１のPID６０２対して、ステップ914において、OS１０９のプロセス中断コマンドを用いてプロセスを中断する。中断後、ステップ915において、現在処理しているプロセス数をカウントアップし、ステップ916において、プロセス数分繰返したかを判定する。
【００４４】
プロセス数分繰返した場合、中断処理を終了する。プロセス数分繰返していない場合、ステップS913、S914、S915、S916を繰返し実行する。
【００４５】
なお、図６のCPU利用率６０３の状況に関わらず、中断対象プロセスリスト１２３のプロセス全てを中断する為、プロセスA、B〜Zが中断する。このように中断対象プロセスを一斉に中断する事で、計算機１０６の高負荷状態を軽減することができる。
【００４６】
前記の設定情報やテーブル等を用いて、各種処理を動作に従い、高負荷状態を検出した場合、負荷を軽減する事が出来る。
【００４７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００４８】
１０１  クライアント端末
１０３  ロードバランサ
１０４  管理端末
１０６  計算機
１１０  業務処理部
１１１  CPU利用率取得処理部
１１２  システム全体取得処理部
１１３  プロセス単位取得処理部
１１４  CPU利用率記憶部
１１５  システム全体のCPU管理TABLE
１１６  プロセス単位のCPU管理TABLE
１１７  中断処理部
１１８  CPU利用率監視処理部
１１９  プロセス中断処理部
１２１  設定情報部
１２２  CPU利用率閾値情報
１２３  中断対象プロセスリスト
１２４  プロセス中断情報
【図１】
2013134636.tif 000003
【図２】
2013134636.tif 000004
【図３】
2013134636.tif 000005
【図４】
2013134636.tif 000006
【図５】
2013134636.tif 000007
【図６】
2013134636.tif 000008
【図７】
2013134636.tif 000009
【図８】
2013134636.tif 000010
【図９】
2013134636.tif 000011