JP2009238011A - 実行環境の制御方法およびプログラム - Google Patents

実行環境の制御方法およびプログラム Download PDF

Info

Publication number
JP2009238011A
JP2009238011A JP2008084602A JP2008084602A JP2009238011A JP 2009238011 A JP2009238011 A JP 2009238011A JP 2008084602 A JP2008084602 A JP 2008084602A JP 2008084602 A JP2008084602 A JP 2008084602A JP 2009238011 A JP2009238011 A JP 2009238011A
Authority
JP
Japan
Prior art keywords
stop
information
necessary
java
garbage collection
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
Application number
JP2008084602A
Other languages
English (en)
Inventor
Tadashi Miyazawa
忠 宮澤
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008084602A priority Critical patent/JP2009238011A/ja
Publication of JP2009238011A publication Critical patent/JP2009238011A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】自立型の障害検出により、システムの複雑性およびその制御の複雑性を排除した実行環境の制御方法およびプログラムを提供すること。
【解決手段】タイマスレッドがJavaヒープ情報を取得して、取得した情報の履歴と、プロパティ情報を比較するステップと、ガベージコレクションの発生間隔とメモリ使用量に関する相関図に照らして、自ら停止する必要があると判断した場合は、WebOTX基盤が、自身を閉塞した後、要求を受け付けたプロセスの停止を行うステップと、TPモニタがプロセスの停止を確認後、プロセスの再起動を行うステップとを有する。
【選択図】図4

Description

本発明は、不正動作の影響を極力Java(登録商標)プロセス内に隠蔽する技術に関する。
関連技術として、Javaのメモリ量を調べるAPI(Application Program Interface)を使ってJava仮想マシンが管理しているメモリ(ヒープ)サイズの定期調査を行い、メモリ不足を検出する技術がある。この技術では、メモリの空きがしきい値より不足した場合に、ガベージコレクションを強制実行することにより、メモリの空きの回復を促している。
上述の関連技術では、処理が自動的に行われているが、トラブルを予測するアルゴリズムに問題があった。Java仮想マシンのメモリ(ヒープ)不足はトラブルの主要因ではあるが、空き容量としきい値を比較してヒープ不足を検出するだけでは必ずしも正しい判断ができているとはいえない。
ヒープが不足した場合には、Java仮想マシンは自動的にガベージコレクションを実行してメモリの回復を図るが、上述の関連技術では、それより前に強制的なガベージコレクションでメモリの回復を図っている。この技術は、メモリの使用量がしきい値を超えた後に徐々にメモリ使用量が増え、自動的なガベージコレクションが起きるまでに比較的長い時間がかかる場合には、有効かもしれない。
しかし、すべてがこのような状況であるとは限らない。例えば、メモリの絶対量が不足していてガベージコレクションの頻度が高い場合には、強制的にガベージコレクションを起こしてもすぐに次のガベージコレクションが起きてしまい、負荷の高いガベージコレクション処理を何度も行ってしまうことになる。
そこで、ガベージコレクション以外のイベント発生時(例えば、メモリの割り当てのイベント発生時など)にはメモリ使用量などの測定を行わず、主にガベージコレクションのイベント発生時の測定と、必要に応じて比較的長い周期での定期的な測定によって、メモリ使用量などの測定を行い、アプリケーションの運用に負荷をかけずにデータの測定を行う技術が提案されている(例えば、特許文献1参照)。
WO2004/099985号公報
Javaあるいはミドルウェア、業務アプリケーション(AP)には必ずといってよいほどバグが存在し、それを原因としてメモリリークが発生する。通常メモリ内部で回収し、その判断はAP側で行うが、バグが存在し、指示を出すのを忘れることが多い。
ここで、1つのシステムが、1つのAPの不具合により、全面的に停止してしまうのでは不都合である。むしろ不具合を発生した1つのAPが自ら消滅し、再起動してくれるのであればこれにこしたことはない。
しかしながら、上述の特許文献1記載の技術では、メモリリークが内在した場合に、ヒープ枯渇を検知し、当該プロセスが自ら自プロセスの停止を実施して、その後再起動することで、不正動作の影響を極力Java(登録商標)プロセス内に隠蔽することが困難である。そのため、マルチスレッド上で動作する業務オブジェクト等の相互干渉を極力排除することが困難であった。
本発明は、上記の課題を解決するためになされたものであり、自立型の障害検出により、システムの複雑性およびその制御の複雑性を排除した実行環境の制御方法およびプログラムを提供することを目的とする。
本発明の実行環境の制御方法は、実行環境のAPが定期的に動作するタイマスレッドを生成するステップと、
生成したタイマスレッドが定期的に動作する度にJavaヒープ情報を取得してその情報の履歴を所定の記憶部に保持するステップと、
取得した前記情報の履歴と、所定のデータベースに格納されているAP動作時の本来あるべき値であるプロパティ情報を比較するステップと、
ガベージコレクションの発生間隔とメモリ使用量に関する相関図に照らして、本来あるべき値に基づくしきい値を超えているため自ら停止する必要があると判断した場合は、詳細情報をJava仮想マシン(MC−Java)から採取するステップと、
必要な情報採取が完了した後に、終了APIにより自プロセスの停止をWebOTX基盤に要求するステップと、
WebOTX基盤が、自身を閉塞して新規要求を受け付けなくし、既に実行中の処理は最後まで実施し、その後要求を受け付けたプロセスの停止を行うステップと、
TPモニタがプロセスの停止を確認後、前記プロセスの再起動を行うステップと
を有することを特徴とする。
本発明のプログラムは、コンピュータに、
実行環境のAPが定期的に動作するタイマスレッドを生成する処理と、
生成したタイマスレッドが定期的に動作する度にJavaヒープ情報を取得してその情報の履歴を所定の記憶部に保持する処理と、
取得した前記情報の履歴と、所定のデータベースに格納されているAP動作時の本来あるべき値であるプロパティ情報を比較する処理と、
ガベージコレクションの発生間隔とメモリ使用量に関する相関図に照らして、本来あるべき値に基づくしきい値を超えているため自ら停止する必要があると判断した場合は、詳細情報をJava仮想マシン(MC−Java)から採取する処理と、
必要な情報採取が完了した後に、終了APIにより自プロセスの停止をWebOTX基盤に要求する処理と、
WebOTX基盤が、自身を閉塞して新規要求を受け付けなくし、既に実行中の処理は最後まで実施し、その後要求を受け付けたプロセスの停止を行う処理と、
TPモニタがプロセスの停止を確認後、前記プロセスの再起動を行う処理と
を実行させることを特徴とする。
本発明によれば、自立型の障害検出により、システムの複雑性およびその制御の複雑性を排除した実行環境の制御方法およびプログラムを提供することができる。
以下、本発明の第一の実施の形態について図面を参照して詳細に説明する。図1に本実施の形態におけるJavaアプリケーション等の運用環境の一例を示す。
Javaアプリケーションの実行環境において、WebOTX基盤(OSでもよい)の上位層にJava仮想マシン(MC−Java)があり、その上位層にServlet、JSP(Java Server Pages)、EJB(Enterprise JavaBeans)等のアプリケーションが動作する。Javaアプリケーションの運用状況を最もよく知っているのは、実行環境の中で最下層に位置して実際にアプリケーションを実行しているJava仮想マシン(MC−Java)である。
AP動作時の適正値として本来あるべき値はAPの完成時の実験等により判明している。この本来あるべき値は所定のデータベースにプロパティ情報として格納されている。
所定のデータベースのプロパティ情報としての値は、コマンドを発行して設定することができる。また、事前に設定用プログラムを用いてシステム管理者等が設定してもよい。
次に、図4のフローチャートを参照して本実施の形態の動作について詳細に説明する。
まず、WebOTX上のAP起動時のstartup処理により、定期的に(例えば、数秒間隔に)動作するタイマスレッドを生成する(S401)。
Java仮想マシン(MC−Java)で使用されているメモリ(ヒープ)の量は、"メモリの割り当て/解放"のイベント発生時に測定されたものが正確な量である。しかし、イベントの発生頻度は非常に高く、すべてのイベント発生時にデータを測定するとアプリケーションの運用に負荷がかかってしまう。統計的な分析のためには、定期的に取得するデータで行うことが可能であり、"メモリの割り当て/解放"イベント発生時にデータの測定を行う必要はない。
Java仮想マシン(MC−Java)は、自分自身の動作状況をよく知っているため、自身内でメモリ(ヒープ)不足を検出することができる。このメモリ不足によってマシン性能が低下する。Java仮想マシン(MC−Java)のメモリの解放処理、すなわちガベージコレクションは、マシン性能に対して非常に大きな影響を与えるが、上述したAP等のバグが存在することでメモリの解放処理等が適切になされない場合がある。
次に、上記のステップS401で生成したタイマスレッドが定期的に動作する度にJVMTI経由でJavaヒープ情報を取得する(S402)。そしてその情報の履歴を所定の記憶部に保持しておく。
そして、ステップS402で取得した情報と、プロパティ情報を比較し、自ら停止する必要があると判断した場合は、詳細情報をJava仮想マシン(MC−Java)から採取する(S403)。すなわち、メモリリークを解析するためにHeapDumpを出力(JavaSE5のjmap相当の実行)する。これにより、自プロセスはどのような状態になったから停止するのかのログをMCOneログ等に残してTPモニタに知らせることができる。これまではHeapDumpはメモリ空間の情報を出力する負荷のかかる処理であるので、通常は実行されなくこれまでのAPの不具合によりAPが消滅してしまうときには何も分析のための情報が残されていなかった。
ここで、プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準を、ガベージコレクションの発生間隔とメモリ使用量に関する相関図を用いて説明する。
図2および図3は、メモリ使用量20、30の変化とガベージコレクション21、31の発生をグラフ化して示したものである。
図2および図3のグラフでは、縦軸をメモリ量とし、横軸を時間としている。図2および図3において、実線はメモリ使用量20、30の時間変化を示し、点線は設定されている最大ヒープサイズ22、32を示す。Java仮想マシン(MC−Java)は、"メモリの割り当て"イベントによりメモリ使用量20、30が最大ヒープサイズ22、32を超えそうなときに、ガベージコレクション21、31を実行し、メモリの解放を行う。
図2は、ガベージコレクション210の発生間隔が短くなる傾向にあるが、ガベージコレクション210によってメモリの空きが回復する状態を表している。なお、ガベージコレクション210が発生しない安定した状態、あるいは、ガベージコレクション210の発生間隔が比較的長く、ガベージコレクション210によってメモリの空きが回復する状態ではメモリ使用量200を示す線は横軸と平行となる。
ここで、図2のガベージコレクション210によってメモリの空きが回復する状態での最下点を結ぶ直線23はフラットとなる。しかし、以下で説明する図3に示すような、なんらかの異常が発生していると直線(折線)33は右肩上がりとなる。
図3は、ガベージコレクション210の発生間隔が短く、ガベージコレクション210によってメモリの空きが十分に回復しない状態を表している。ガベージコレクション210の発生頻度が通常なら2回のところが3回になるなど、その頻度も大きくなる。
プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、図3に示す直線(折線)33の傾きの大きさである。また、ガベージコレクション210の発生頻度が考慮されてもよい。また、APの通常のオブジェクトの生成の特性が正規分布に近い特性が考慮されてもよい。APの完成時の実験等により判明している本来あるべき値に基づくしきい値を超えている場合には自ら自プロセスを停止する必要があると判断する。
なお、自ら停止する必要があると判断するルールは、自ら変更できてもよい。また自プロセスとしては変調をきたしているが、システム全体としては余裕があるので自プロセスを停止しないという判断がなされてもよい。
上記のステップS404で必要な情報採取が完了した後に、終了API(新規)により自プロセスの停止をWebOTX基盤に要求する(S404)。
一方、WebOTX基盤は、ステップS404における要求を受け付けたプロセスの停止を行う(S405)。すなわち、停止要求を受け付けたWebOTX基盤は、まず、自身を閉塞して新規要求を受け付けなくする。そして既に実行中の処理(浮いてなく張り付いているもの)は最後まで実施し、その後終了処理を行う。
最後に、TPモニタはプロセスの停止を確認後、再起動を行う(S406)。そしてステップS401の処理へと戻ることとなる。例えば、入金と出金の両方が成功した場合にのみ認証されるトランザクション処理を実現するソフトウェアに有用である。
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、Java仮想マシン(MC−Java)等の機能を実現するためのプログラムをJava仮想マシン(MC−Java)に読込ませて実行することにより機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるCD−ROMまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
本発明の実施の形態に係るJavaアプリケーション等の運用環境の一例を示す図である。 通常のメモリ使用量の変化とガベージコレクションの発生をグラフ化して示した図である。 異常時のメモリ使用量の変化とガベージコレクションの発生をグラフ化して示した図である。 本発明の実施の形態の処理動作を示すフローチャートである。

Claims (10)

  1. 実行環境のAPが定期的に動作するタイマスレッドを生成するステップと、
    生成したタイマスレッドが定期的に動作する度にJavaヒープ情報を取得してその情報の履歴を所定の記憶部に保持するステップと、
    取得した前記情報の履歴と、所定のデータベースに格納されているAP動作時の本来あるべき値であるプロパティ情報を比較するステップと、
    ガベージコレクションの発生間隔とメモリ使用量に関する相関図に照らして、本来あるべき値に基づくしきい値を超えているため自ら停止する必要があると判断した場合は、詳細情報をJava仮想マシン(MC−Java)から採取するステップと、
    必要な情報採取が完了した後に、終了APIにより自プロセスの停止をWebOTX基盤に要求するステップと、
    WebOTX基盤が、自身を閉塞して新規要求を受け付けなくし、既に実行中の処理は最後まで実施し、その後要求を受け付けたプロセスの停止を行うステップと、
    TPモニタがプロセスの停止を確認後、前記プロセスの再起動を行うステップと
    を有することを特徴とする実行環境の制御方法。
  2. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、前記相関図に示す直線(折線)の傾きの大きさであることを特徴とする請求項1記載の実行環境の制御方法。
  3. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、ガベージコレクションの発生頻度であることを特徴とする請求項1または2記載の実行環境の制御方法。
  4. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、APの通常のオブジェクトの生成の特性が正規分布に近い特性が考慮されることを特徴とする請求項1から3のいずれか1項に記載の実行環境の制御方法。
  5. 自プロセスとしては変調をきたしているが、システム全体としては余裕があるので自プロセスを停止しないという判断がなされてもよいことを特徴とする請求項1から4のいずれか1項に記載の実行環境の制御方法。
  6. コンピュータに、
    実行環境のAPが定期的に動作するタイマスレッドを生成する処理と、
    生成したタイマスレッドが定期的に動作する度にJavaヒープ情報を取得してその情報の履歴を所定の記憶部に保持する処理と、
    取得した前記情報の履歴と、所定のデータベースに格納されているAP動作時の本来あるべき値であるプロパティ情報を比較する処理と、
    ガベージコレクションの発生間隔とメモリ使用量に関する相関図に照らして、本来あるべき値に基づくしきい値を超えているため自ら停止する必要があると判断した場合は、詳細情報をJava仮想マシン(MC−Java)から採取する処理と、
    必要な情報採取が完了した後に、終了APIにより自プロセスの停止をWebOTX基盤に要求する処理と、
    WebOTX基盤が、自身を閉塞して新規要求を受け付けなくし、既に実行中の処理は最後まで実施し、その後要求を受け付けたプロセスの停止を行う処理と、
    TPモニタがプロセスの停止を確認後、前記プロセスの再起動を行う処理と
    を実行させることを特徴とするプログラム。
  7. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、前記相関図に示す直線(折線)の傾きの大きさであることを特徴とする請求項6記載のプログラム。
  8. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、ガベージコレクションの発生頻度であることを特徴とする請求項6または7記載のプログラム。
  9. 前記プロパティ情報との比較により、自ら停止する必要があると判断する際の判断基準は、APの通常のオブジェクトの生成の特性が正規分布に近い特性が考慮されることを特徴とする請求項6から8のいずれか1項に記載のプログラム。
  10. 自プロセスとしては変調をきたしているが、コンピュータシステム全体としては余裕があるので自プロセスを停止しないという判断がなされてもよいことを特徴とする請求項6から9のいずれか1項に記載のプログラム。
JP2008084602A 2008-03-27 2008-03-27 実行環境の制御方法およびプログラム Pending JP2009238011A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008084602A JP2009238011A (ja) 2008-03-27 2008-03-27 実行環境の制御方法およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008084602A JP2009238011A (ja) 2008-03-27 2008-03-27 実行環境の制御方法およびプログラム

Publications (1)

Publication Number Publication Date
JP2009238011A true JP2009238011A (ja) 2009-10-15

Family

ID=41251858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008084602A Pending JP2009238011A (ja) 2008-03-27 2008-03-27 実行環境の制御方法およびプログラム

Country Status (1)

Country Link
JP (1) JP2009238011A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412751B2 (en) 2010-12-15 2013-04-02 International Business Machines Corporation Determining whether a Java object has been scan-missed by a garbage collector scan
US11409566B2 (en) 2018-02-28 2022-08-09 Mitsubishi Electric Corporation Resource control device, resource control method, and computer readable medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004099985A1 (ja) * 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
JP2007226399A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd 計算機制御方法、計算機、計算機制御プログラム及び計算機システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004099985A1 (ja) * 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
JP2007226399A (ja) * 2006-02-22 2007-09-06 Hitachi Ltd 計算機制御方法、計算機、計算機制御プログラム及び計算機システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8412751B2 (en) 2010-12-15 2013-04-02 International Business Machines Corporation Determining whether a Java object has been scan-missed by a garbage collector scan
US11409566B2 (en) 2018-02-28 2022-08-09 Mitsubishi Electric Corporation Resource control device, resource control method, and computer readable medium

Similar Documents

Publication Publication Date Title
KR102268355B1 (ko) 클라우드 배치 기반구조 검증 엔진
US7185335B2 (en) Programmatic application installation diagnosis and cleaning
JP5128944B2 (ja) コンピュータアプリケーションにおけるデータ損失を最小限にする方法およびシステム
US8930915B2 (en) System and method for mitigating repeated crashes of an application resulting from supplemental code
US8140908B2 (en) System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception
US9229840B2 (en) Managing traces to capture data for memory regions in a memory
US20080155548A1 (en) Autonomic logging support
WO2010043176A1 (zh) 内存泄漏的检测方法和装置
US8793289B2 (en) Method and system for detecting memory leaks and copying garbage collection files
US8904359B2 (en) On-demand monitoring of memory usage
CN111813646B (zh) docker容器环境下注入应用探针的方法和装置
CN110659159A (zh) 一种服务进程运行监控方法、装置、设备及存储介质
Huang et al. Metastable failures in the wild
TWI518680B (zh) 維護電腦系統之檔案系統的方法
JP6428005B2 (ja) 情報処理装置,情報処理方法及び情報処理プログラム
JP2009238011A (ja) 実行環境の制御方法およびプログラム
JP4144885B2 (ja) アプリケーション・オブジェクトの再利用方法
CN111104266A (zh) 访问资源的分配方法、装置、存储介质和电子设备
Wang et al. Understanding device integration bugs in smart home system
JP4968092B2 (ja) ストール検出装置、ストール検出方法、及びストール検出プログラム
JPWO2014132466A1 (ja) ソフトウェア安全停止システム、ソフトウェア安全停止方法、およびプログラム
CN117610009B (zh) 基于代码疫苗rasp探针的跨线程漏洞修复方法及装置
JP5446666B2 (ja) プロセス管理プログラム及びプロセス管理方法
JP2008026937A (ja) 保守情報採取プログラム、保守情報採取方法、情報機器、及び外部記憶媒体
CN114048473A (zh) 针对计算机的恶意软件的处理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110215

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110920

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130226