(57)【要約】【課題】サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現できるようにすることを目的とする。【解決手段】障害再現システム１０１は検証用サーバ３００とパケット再送サーバ４００とを備える。検証用サーバ３００は、サーバ装置の特定の時点のスナップショット２０１に基づいて、前記特定の時点の前記サーバ装置をアプリケーション仮想再現サーバ２１０Ｂとして再現する。パケット再送サーバ４００は、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうちクライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、アプリケーション仮想再現サーバ２１０Ｂに前記対象パケットを処理させる。【選択図】図５
2010205011.tif 000002
【特許請求の範囲】
【請求項１】
クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて再現する特定時点再現装置と、
前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をＣＰＵを用いて再現する障害再現装置と
を有することを特徴とする障害再現システム。
【請求項２】
前記障害再現装置は、
複数の対象パケットのうち最初に収集された対象パケットである対象先頭パケットの収集時刻に基づいて、前記特定時点サーバに前記対象先頭パケットを処理させるタイミングを処理開始タイミングとしてＣＰＵを用いて決定する処理開始タイミング決定部と、
前記処理開始タイミング決定部により決定された処理開始タイミングに前記特定時点サーバへの各対象パケットの入力をＣＰＵを用いて開始して前記特定時点サーバに各対象パケットを処理させる処理要求部と
を備えたことを特徴とする請求項１記載の障害再現システム。
【請求項３】
前記処理開始タイミング決定部は、前記特定の時点の時刻を再現時のシステム時刻として再現される前記特定時点サーバから前記特定時点サーバのシステム時刻をサーバ時刻として取得し、取得したサーバ時刻と前記対象先頭パケットの収集時刻との時刻差に基づいて前記処理開始タイミングを決定する
ことを特徴とする請求項２記載の障害再現システム。
【請求項４】
前記処理開始タイミング決定部は、
前記パケット収集装置により前記特定の時点から前記障害発生時点までの間に収集された複数のパケットデータに、前記サーバ装置から送信されたパケットデータであって前記サーバ装置から送信されたときの前記サーバ装置のシステム時刻を示すパケットデータであるタイムスタンプパケットが含まれる場合、前記タイムスタンプパケットの収集時刻と前記タイムスタンプパケットにより示されるシステム時刻との時刻差を、収集時刻とシステム時刻との時刻差を示す収集時刻誤差として算出し、
前記対象先頭パケットの収集時刻と前記収集時刻誤差とに基づいて、前記対象先頭パケットが前記サーバ装置へ送信されたときの前記サーバ装置のシステム時刻をサーバ処理開始時刻として算出し、
前記サーバ時刻と前記サーバ処理開始時刻との時刻差に基づいて前記処理開始タイミングを決定する
ことを特徴とする請求項３記載の障害再現システム。
【請求項５】
前記処理要求部は、複数の対象パケットそれぞれの収集時刻に基づいて各対象パケットの送信時間間隔を算出し、各対象パケットを前記送信時間間隔で前記特定時点サーバに入力する
ことを特徴とする請求項２〜請求項４いずれかに記載の障害再現システム。
【請求項６】
前記処理要求部は、対象パケットを前記特定時点サーバに入力するタイミングを処理タイミングとして対象パケット毎に前記送信時間間隔に基づいて決定し、
対象パケットがＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ヘッダを含んだＴＣＰパケットである場合、前記クライアント装置が前記ＴＣＰパケットを送信したときに前記クライアント装置が前記サーバ装置から受信済みであるデータ量を示す値として前記ＴＣＰヘッダに設定された応答確認番号と前記特定時点サーバから出力されたデータ量とが一致したタイミングと、前記ＴＣＰパケットの処理タイミングとのうち、遅い方のタイミングで前記ＴＣＰパケットを前記特定時点サーバに入力する
ことを特徴とする請求項５記載の障害再現システム。
【請求項７】
前記特定時点再現装置と前記障害再現装置とを仮想マシンとして備える障害再現仮想装置
を有することを特徴とする請求項１〜請求項６いずれかに記載の障害再現システム。
【請求項８】
特定時点再現装置が、クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて再現し、
障害再現装置が、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をＣＰＵを用いて再現する
ことを特徴とする障害再現方法。
【請求項９】
ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）パケットを送受信する通信装置へネットワークを介して送信されると共に前記ネットワークから対象パケットとして収集された複数のＴＣＰパケットそれぞれの収集時刻に基づいて、ＴＣＰパケットを入出力するパケット処理装置へ前記対象パケットを入力する第１のタイミングをＣＰＵを用いて決定する第１のタイミング決定部と、
前記対象パケットのＴＣＰヘッダに設定された応答確認番号と、前記パケット処理装置から出力されたＴＣＰパケットのデータ量とに基づいて前記パケット処理装置へ前記対象パケットを入力する第２のタイミングをＣＰＵを用いて決定する第２のタイミング決定部と、
前記第１のタイミング決定部により決定された前記第１のタイミングと前記第２のタイミング決定部により決定された前記第２のタイミングとのうち遅い方のタイミングで前記対象パケットを前記パケット処理装置に入力して前記通信装置による各対象パケットの受信処理を前記パケット処理装置に再現させるパケット入力部と
を備えたことを特徴とする通信再現装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、仮想マシン環境におけるサーバアプリケーションの障害を再現する障害再現システム、障害再現方法および通信再現装置に関するものである。
【背景技術】
【０００２】
オンラインシステムでは、一般的にＴＣＰ／ＩＰを用いてネットワーク通信が行われている。
サーバシステムの開発者は、障害解析を行うためにネットワークを流れるパケットをネットワークアナライザ等の機器を用いて取得し、パケット情報を解析することで障害対応を行っている。障害原因が解析できなかった場合には、障害発生時と同じ環境を用意して再現試験を行う必要があった。しかし、同一環境の準備や、長時間の試験内で発生した障害を再現することは非常に困難である。
【０００３】
これらの課題を解決するため、障害発生前のスナップショットからプログラムの実行を再現することや、ネットワーク上で取得したパケットを検証用の環境で送信することにより、ネットワークの通信状況を再現することが考えられる。
【０００４】
従来のシステムでは、スナップショットからのプログラム再現において、共有メモリへのアクセス履歴や各プロセッサのアクセス履歴等をスナップショット情報として扱い、任意のチェックポイントからプログラムの実行を再現している（特許文献１参照）。
また、ネットワークの通信状況の再現において、アプリケーションの評価を行うために、検証用の環境でパケットを送信することによりパケット取得時と同じネットワーク通信状況を再現するパケット発生装置がある（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−１３８０５号公報
【特許文献２】特開２００６−２９５５１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した方法では、スナップショットを用いてプログラムを再現するために共有メモリへのアクセス情報を用いている。このため、サーバアプリケーションのようにネットワークを経由した外部から操作されるプログラムの実行を再現することはできない。そのため、サーバアプリケーションの障害を再現することはできない。
また、上述のパケット発生装置は、検証用の環境でネットワーク通信状況を再現し、その通信環境でアプリケーションの評価を行うものである。このため、ネットワーク通信を再現させてアプリケーションの動作そのものを再現することはできない。また、ＴＣＰを用いた通信はコネクション接続が必要であるため、単にパケットを送信するだけではコネクションの接続に失敗し、ネットワーク通信の再現に失敗する。
【０００７】
本発明は、例えば、上記の課題を解決するものであり、サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の障害再現システムは、クライアント装置からネットワークを介して送信されたパケットデータを処理するサーバ装置から取得された前記サーバ装置の特定の時点の特定の情報に基づいて、前記特定の時点の前記サーバ装置を特定時点サーバとしてＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いて再現する特定時点再現装置と、前記ネットワークを介して送信されるパケットデータを収集するパケット収集装置により前記特定の時点から前記サーバ装置に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうち前記クライアント装置から前記サーバ装置へ送信されたパケットデータを対象パケットとして、前記特定時点再現装置により再現された特定時点サーバに前記対象パケットを処理させて前記特定の時点から前記障害発生時点までの前記サーバ装置をＣＰＵを用いて再現する障害再現装置とを有する。
【発明の効果】
【０００９】
本発明によれば、例えば、サーバアプリケーションの動作を再現し、サーバアプリケーションの障害を再現することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１における障害再現対象のオンラインシステム１００の構成図。
【図２】実施の形態１におけるネットワークパケット情報２０２の一例。
【図３】実施の形態１におけるネットワークパケット情報２０２の一例。
【図４】実施の形態１におけるネットワークパケット情報２０２の一例。
【図５】実施の形態１における障害再現システム１０１の構成図。
【図６】実施の形態１における各装置のハードウェア資源の一例を示す図。
【図７】実施の形態１における障害再現方法を示すフローチャート。
【図８】実施の形態１におけるターゲット同期処理（Ｓ２００）のフローチャート。
【図９】実施の形態１におけるネットワーク通信再現処理（Ｓ３００）のフローチャート。
【図１０】実施の形態１におけるＴＣＰ通信状況管理テーブル４９１の構造図。
【図１１】実施の形態２におけるネットワークパケット情報２０２の一例。
【図１２】実施の形態２におけるターゲット同期処理（Ｓ２００）のフローチャート。
【図１３】実施の形態２におけるターゲット同期処理（Ｓ２００）のフローチャートの別例。
【図１４】実施の形態３における障害再現システム１０１の構成図。
【図１５】実施の形態４における通信再現システム１０２の構成図。
【発明を実施するための形態】
【００１１】
実施の形態１．
特定時点に取得されたスナップショットと特定時点以降にネットワークから収集されたパケットデータとに基づいてアプリケーションサーバに発生した障害を再現する障害再現システムおよび障害再現方法について説明する。
【００１２】
図１は、実施の形態１における障害再現対象のオンラインシステム１００の構成図である。
障害を再現したい対象のオンラインシステム１００の構成について、図１に基づいて以下に説明する。
【００１３】
オンラインシステム１００は、クライアント装置（クライアントＡ１２０、クライアントＢ１３０）とクライアント装置からネットワーク１１０を介して送信されたパケットデータを処理するサーバ装置（以下、「アプリケーションサーバ２００」という）とを有する。
アプリケーションサーバ２００と各クライアントとは、ネットワーク１１０を介してパケットデータを用いて通信する。
オンラインシステム１００は、開発中の試験システムであっても、実稼動中の本番システムであっても構わない。
【００１４】
アプリケーションサーバ２００はアプリケーション仮想サーバ２１０、情報収集仮想サーバ２２０（パケット収集装置の一例）およびオンライン仮想マシンモニタ部２３０を備える。
【００１５】
アプリケーションサーバ２００は、仮想化ソフトウェア（オンライン仮想マシンモニタ部２３０）をインストールしたサーバである。
アプリケーション仮想サーバ２１０および情報収集仮想サーバ２２０は、仮想化ソフトウェアにより仮想化された計算機（仮想マシン）である。
仮想サーバは、割り当てられた計算機資源（ＣＰＵ使用時間、メモリ領域）を使用し、独立した計算機のように動作する。
但し、アプリケーション仮想サーバ２１０および情報収集仮想サーバ２２０は、仮想マシンでなく実計算機であっても構わない。
【００１６】
アプリケーション仮想サーバ２１０は、障害再現対象のサーバ（ターゲットサーバ）であり、クライアントから要求された処理をＣＰＵを用いて実行するアプリケーション部２１１を備える。
【００１７】
オンライン仮想マシンモニタ部２３０は、アプリケーション仮想サーバ２１０からスナップショットを取得するスナップショット取得部２３１を備える。
スナップショットは、装置のある時点の状態を示す情報（例えば、メモリ領域の値）である。
【００１８】
情報収集仮想サーバ２２０は、情報収集部２２１と収集情報記憶部２２９とを備える。
情報収集部２２１は、ネットワーク１１０を介して通信されているパケットデータを収集し、収集したパケットデータを収集時刻と共にネットワークパケット情報２０２に設定する。ネットワークパケット情報２０２は収集情報記憶部２２９に記憶されている。さらに、情報収集部２２１は、オンライン仮想マシンモニタ部２３０のスナップショット取得部２３１に定期的にスナップショット取得要求を行い、取得されたアプリケーション仮想サーバ２１０のスナップショットを収集情報記憶部２２９に保存する。
収集情報記憶部２２９には、最新のスナップショット２０１が保存されている。また、収集情報記憶部２２９には、最新のスナップショット２０１が取得されたとき以後に収集されたパケットデータとその収集時刻とが設定されたネットワークパケット情報２０２が記憶されている。
【００１９】
図２、図３および図４は、実施の形態１におけるネットワークパケット情報２０２の一例である。
図２に示すように、ネットワークパケット情報２０２には、パケットデータと当該パケットデータの収集時刻とが設定される。
収集時刻は、情報収集部２２１が当該パケットを収集したときの情報収集仮想サーバ２２０のシステム時刻を示す。
図３または図４に示すように、ネットワークパケット情報２０２には、クライアントからアプリケーション仮想サーバ２１０へ送信されたパケットおよびアプリケーション仮想サーバ２１０からクライアントへ送信されたパケットが含まれる。
【００２０】
図５は、実施の形態１における障害再現システム１０１の構成図である。
実施の形態１における障害再現システム１０１の構成について、図５に基づいて以下に説明する。
【００２１】
障害再現システム１０１は、アプリケーション仮想サーバ２１０の障害を再現するサーバ装置（以下、「検証用サーバ３００」という）（特定時点再現装置の一例）と、クライアントの代わりにパケットデータを送信するサーバ装置（以下、「パケット再送サーバ４００」という）（障害再現装置の一例）とを有する。
検証用サーバ３００とパケット再送サーバ４００とは、ネットワーク１１１を介してパケットデータを送受信する。
障害再現システム１０１は、オンラインシステム１００（図１参照）と同じ環境（例えば、ネットワークが同一、アプリケーションサーバ２００と検証用サーバ３００とが同一計算機）であっても、オンラインシステム１００と異なる環境であっても構わない。
【００２２】
検証用サーバ３００は、アプリケーション仮想再現サーバ２１０Ｂ（特定時点サーバの一例）、検証用仮想マシンモニタ部３１０および検証用記憶部３９０を備える。
検証用記憶部３９０には、オンラインシステム１００の情報収集仮想サーバ２２０に記憶されているスナップショット２０１がコピーされているものとする。
検証用仮想マシンモニタ部３１０は、検証用記憶部３９０に記憶されているスナップショット２０１に基づいて、スナップショット２０１が取得された時点のアプリケーション仮想サーバ２１０をアプリケーション仮想再現サーバ２１０Ｂ（仮想マシン）（実計算機でも構わない）としてＣＰＵを用いて再現する。
再現されたときのアプリケーション仮想再現サーバ２１０Ｂのシステム時刻はスナップショット２０１の取得時刻を示す。
【００２３】
パケット再送サーバ４００は、情報収集仮想サーバ２２０によりスナップショット２０１の取得時点からアプリケーション仮想サーバ２１０に障害が発生した障害発生時点までの間に収集された複数のパケットデータのうちクライアントからアプリケーション仮想サーバ２１０へ送信されたパケットデータを対象パケット（例えば、後述する「送信収集パケット」）として、検証用サーバ３００により再現されたアプリケーション仮想再現サーバ２１０Ｂに対象パケットを処理させて、スナップショット２０１の取得時点から障害発生時点までのアプリケーション仮想サーバ２１０をＣＰＵを用いて再現する。
【００２４】
パケット再送サーバ４００は、実行トレース再生部４１０と再送用記憶部４９０とを備える。
再送用記憶部４９０には、オンラインシステム１００の情報収集仮想サーバ２２０に記憶されているネットワークパケット情報２０２がコピーされているものとする。
実行トレース再生部４１０は、ターゲット同期部４１１（処理開始タイミング決定部の一例）とネットワーク通信再現部４１２（処理要求部の一例）とを備える。
【００２５】
ターゲット同期部４１１は、複数の対象パケットのうち最初に収集された対象パケットである対象先頭パケット（例えば、後述する「先頭収集パケット」）の収集時刻に基づいて、アプリケーション仮想再現サーバ２１０Ｂに前記対象先頭パケットを処理させるタイミングを処理開始タイミング（例えば、後述する「先頭収集パケットの送信タイミング」）としてＣＰＵを用いて決定する。
【００２６】
例えば、ターゲット同期部４１１は、アプリケーション仮想再現サーバ２１０Ｂからシステム時刻をサーバ時刻として取得し、取得したサーバ時刻と前記対象先頭パケットの収集時刻との時刻差に基づいて前記処理開始タイミングを決定する。
【００２７】
また例えば、ターゲット同期部４１１は、まず、アプリケーション仮想サーバ２１０から送信されたパケットデータであってアプリケーション仮想サーバ２１０から送信されたときのアプリケーション仮想サーバ２１０のシステム時刻を示すパケットデータであるタイムスタンプパケット（例えば、後述する「ＩＣＭＰタイムスタンプ応答」）がネットワークパケット情報２０２に含まれる場合、前記タイムスタンプパケットの収集時刻と前記タイムスタンプパケットに示されるシステム時刻との時刻差を、収集時刻とシステム時刻との時刻差を示す収集時刻誤差として算出する。
次に、ターゲット同期部４１１は、前記対象先頭パケットの収集時刻と前記収集時刻誤差とに基づいて、前記対象先頭パケットがアプリケーション仮想サーバ２１０へ送信されたときのアプリケーション仮想サーバ２１０のシステム時刻をサーバ処理開始時刻として算出する。
そして、ターゲット同期部４１１は、前記サーバ時刻と前記サーバ処理開始時刻との時刻差に基づいて前記処理開始タイミングを決定する。
【００２８】
ネットワーク通信再現部４１２は、ターゲット同期部４１１により決定された処理開始タイミングにアプリケーション仮想再現サーバ２１０Ｂへの各対象パケットの送信をＣＰＵを用いて開始してアプリケーション仮想再現サーバ２１０Ｂに各対象パケットを処理させる。
【００２９】
例えば、ネットワーク通信再現部４１２は、複数の対象パケットそれぞれの収集時刻に基づいて各対象パケットの送信時間間隔を算出し、各対象パケットを前記送信時間間隔でアプリケーション仮想再現サーバ２１０Ｂに送信する。
【００３０】
また例えば、ネットワーク通信再現部４１２は、まず、対象パケットをアプリケーション仮想再現サーバ２１０Ｂに送信するタイミングを処理タイミングとして対象パケット毎に前記処理間隔に基づいて決定する。
次に、ネットワーク通信再現部４１２は、対象パケットがＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ヘッダを含んだＴＣＰパケットである場合、クライアントが前記ＴＣＰパケットを送信したときにアプリケーション仮想サーバ２１０から受信済みであるデータ量を示す値として前記ＴＣＰヘッダに設定された応答確認番号を前記ＴＣＰヘッダから取得する。
そして、ネットワーク通信再現部４１２は、取得した応答確認番号とアプリケーション仮想再現サーバ２１０Ｂから受信したデータ量とが一致したタイミングと、前記ＴＣＰパケットの処理タイミングとのうち、遅い方のタイミングで前記ＴＣＰパケットをアプリケーション仮想再現サーバ２１０Ｂに送信する。
【００３１】
図６は、実施の形態１における各装置のハードウェア資源の一例を示す図である。
図６において、各装置（アプリケーションサーバ２００、検証用サーバ３００、パケット再送サーバ４００）は、ＣＰＵ９１１（マイクロプロセッサ、マイクロコンピュータともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、ドライブ装置９０４、プリンタ装置９０６、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。ドライブ装置９０４は、ＦＤ（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｃ）などの記憶媒体を読み書きする装置である。
【００３２】
通信ボード９１５は、有線または無線で、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット、電話回線などの通信網に接続している。
【００３３】
磁気ディスク装置９２０には、ＯＳ９２１（オペレーティングシステム）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
【００３４】
プログラム群９２３には、実施の形態において「〜部」として説明する機能を実行するプログラムが含まれる。プログラムは、ＣＰＵ９１１により読み出され実行される。すなわち、プログラムは、「〜部」としてコンピュータを機能させるものであり、また「〜部」の手順や方法をコンピュータに実行させるものである。
【００３５】
ファイル群９２４には、実施の形態において説明する「〜部」で使用される各種データ（入力、出力、判定結果、計算結果、処理結果など）が含まれる。
【００３６】
実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
【００３７】
実施の形態において「〜部」として説明するものは「〜回路」、「〜装置」、「〜機器」であってもよく、また「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
【００３８】
図７は、実施の形態１における障害再現方法を示すフローチャートである。
実施の形態１における障害再現方法について、図７に基づいて以下に説明する。
【００３９】
まず、検証用サーバ３００において、検証用仮想マシンモニタ部３１０のスナップショット再生部３１１がスナップショット２０１に基づいて障害発生前のアプリケーション仮想サーバ２１０を再現する（Ｓ１００：スナップショット再生処理）。
次に、パケット再送サーバ４００において、実行トレース再生部４１０のターゲット同期部４１１がネットワークパケット情報２０２に基づいてパケットデータの送信開始タイミングを決定する（Ｓ２００：ターゲット同期処理）。
そして、パケット再送サーバ４００において、実行トレース再生部４１０のネットワーク通信再現部４１２がネットワークパケット情報２０２に基づいて障害発生までに送信されたパケットデータをアプリケーション仮想再現サーバ２１０Ｂへ送信する（Ｓ３００：ネットワーク通信再現処理）。
ネットワーク通信再現処理（Ｓ３００）で送信されたパケットデータを処理したアプリケーション仮想再現サーバ２１０Ｂが障害を再現した場合（Ｓ１９９「ＹＥＳ」）、障害再現方法は終了する。利用者は、障害再現結果に基づいて障害要因を特定し、オンラインシステム１００を改正する。
アプリケーション仮想再現サーバ２１０Ｂが障害を再現しなかった場合（Ｓ１９９「ＮＯ」）、利用者はＳ１００〜Ｓ３００を再度実行させる。
【００４０】
図８は、実施の形態１におけるターゲット同期処理（Ｓ２００）のフローチャートである。
実施の形態１におけるターゲット同期処理（Ｓ２００）について、図８に基づいて以下に説明する。
【００４１】
＜Ｓ２１０＞
ターゲット同期部４１１は、ネットワークパケット情報２０２の先頭に設定されているパケットデータ（以下、「先頭収集パケット」という）を参照する。
Ｓ２１０の後、処理はＳ２１１に進む。
【００４２】
＜Ｓ２１１＞
ターゲット同期部４１１は、Ｓ２１０で参照した先頭収集パケットが「クライアントからサーバ（アプリケーション仮想サーバ２１０）へのパケット」と「サーバからクライアントへのパケット」とのいずれであるかを判定する。
以下、「クライアントからサーバへのパケット」をパケット再送サーバ４００が再送する「送信収集パケット」という。
また、「サーバからクライアントへのパケット」を「受信収集パケット」という。
【００４３】
例えば、ターゲット同期部４１１は図３のネットワークパケット情報２０２を参照して先頭収集パケットが「受信収集パケット」であると判定する。
また例えば、ターゲット同期部４１１は図４のネットワークパケット情報２０２を参照して先頭収集パケットが「送信収集パケット」であると判定する。
【００４４】
先頭収集パケットが「受信収集パケット」である場合、処理はＳ２１２に進む。
先頭収集パケットが「送信収集パケット」である場合、処理はＳ２１３に進む。
【００４５】
＜Ｓ２１２＞
Ｓ２１１において先頭収集パケットが「受信収集パケット」である場合、ターゲット同期部４１１は、先頭収集パケットに相当するパケットデータをアプリケーション仮想再現サーバ２１０Ｂから受信するのを待つ。
そして、ターゲット同期部４１１は、アプリケーション仮想再現サーバ２１０Ｂから最初に受信したパケットデータを先頭収集パケットに相当するパケットデータであると判断する。
アプリケーション仮想再現サーバ２１０Ｂからパケットデータを受信したとき、ターゲット同期処理（Ｓ２００）は終了する。
【００４６】
＜Ｓ２１３＞
Ｓ２１１において先頭収集パケットが「送信収集パケット」である場合、ターゲット同期部４１１は、ＩＣＭＰタイムスタンプ要求を周期的にアプリケーション仮想再現サーバ２１０Ｂへ送信し、アプリケーション仮想再現サーバ２１０ＢからＩＣＭＰタイムスタンプ応答を受信するのを待つ（ポーリング）。
ＩＣＭＰタイムスタンプ要求は現在のシステム時刻の応答を要求するためのパケットデータであり、ＩＣＭＰタイムスタンプ応答は現在のシステム時刻を応答するためのパケットデータである。
アプリケーション仮想再現サーバ２１０ＢからＩＣＭＰタイムスタンプ応答を受信した場合、ターゲット同期部４１１は、アプリケーション仮想再現サーバ２１０Ｂが稼働開始したと判断する。
さらに、ターゲット同期部４１１は、受信したＩＣＭＰタイムスタンプ応答からアプリケーション仮想再現サーバ２１０Ｂの現在のシステム時刻を取得する。
Ｓ２１３の後、処理はＳ２１４に進む。
【００４７】
＜Ｓ２１４＞
ターゲット同期部４１１は、Ｓ２１３において取得したアプリケーション仮想再現サーバ２１０Ｂのシステム時刻に基づいて、ネットワークパケット情報２０２内の先頭収集パケット（送信収集パケット）の送信タイミングを待つ。
このとき、ターゲット同期部４１１は、アプリケーション仮想再現サーバ２１０Ｂのシステム時刻と先頭収集パケットの収集時刻とを比較する。
先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ２１０Ｂのシステム時刻以降の時刻である場合、ターゲット同期部４１１は、アプリケーション仮想再現サーバ２１０Ｂのシステム時刻と先頭収集パケットの収集時刻との時間差を待ち時間として算出し、待ち時間を経過した時点を送信タイミングとして待ち時間の経過を待つ。
先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ２１０Ｂのシステム時刻以前の時刻である場合、ターゲット同期部４１１は、比較した時点を送信タイミングとする。
【００４８】
例えば、アプリケーション仮想再現サーバ２１０Ｂのシステム時刻が「１２時００分００秒１００ミリ秒」であり、先頭収集パケットの収集時刻がアプリケーション仮想再現サーバ２１０Ｂのシステム時刻から５秒後の「１２時００分０５秒１００ミリ秒」である場合、ターゲット同期部４１１は、先頭収集パケットの送信タイミングを「５秒後」とし、「５秒」経過するのを待つ。
【００４９】
送信タイミングになったとき、ターゲット同期処理（Ｓ２００）は終了する。
【００５０】
ターゲット同期処理（Ｓ２００）に続けて、次に説明するネットワーク通信再現処理（Ｓ３００）が実行される。
【００５１】
図９は、実施の形態１におけるネットワーク通信再現処理（Ｓ３００）のフローチャートである。
実施の形態１におけるネットワーク通信再現処理（Ｓ３００）について、図９に基づいて以下に説明する。
【００５２】
以下、パケットデータをＩＰパケットとして説明する。
【００５３】
＜Ｓ３１０＞
ネットワーク通信再現部４１２は、ネットワークパケット情報２０２からパケットデータを一つ取り出す。
Ｓ３１０から後述するＳ３３２までの処理はループ処理される。
ネットワーク通信再現部４１２は、初回のループ時にはネットワークパケット情報２０２から先頭のパケットデータを取り出し、２回目のループ時にはネットワークパケット情報２０２から２番目のパケットデータを取り出し、Ｘ回目のループ時にはネットワークパケット情報２０２からＸ番目のパケットデータを取り出す。
Ｓ３１０の後、処理はＳ３１１に進む。
【００５４】
＜Ｓ３１１＞
ネットワーク通信再現部４１２は、Ｓ３１０で取り出したパケットデータが「送信収集パケット」と「受信収集パケット」とのいずれであるか判定する。
「送信収集パケット」である場合、処理はＳ３２０に進む。
「受信収集パケット」である場合、処理はＳ３３２に進む。
【００５５】
＜Ｓ３２０＞
ネットワーク通信再現部４１２は、送信収集パケット（ＩＰパケット）のＩＰヘッダを参照し、上位プロトコルが「ＴＣＰ」であるか否かを判定する。
上位プロトコルが「ＴＣＰ」である場合、処理はＳ３２１に進む。
上位プロトコルが「ＴＣＰ」以外（例えば、ＵＤＰ、ＩＣＭＰ）である場合、処理はＳ３３０に進む。
【００５６】
＜Ｓ３２１＞
Ｓ３２０において上位プロトコルが「ＴＣＰ」である場合、ネットワーク通信再現部４１２は、送信収集パケットのＴＣＰヘッダを参照し、送信収集パケットがコネクション確立を要求する「ＳＹＮ」パケットであるか否かを判定する。
オンラインシステム１００では、クライアントが「ＳＹＮ」パケットを送信してアプリケーション仮想サーバ２１０とコネクションを確立しているものとする。
送信収集パケットが「ＳＹＮ」パケットである場合（ＹＥＳ）、処理はＳ３２２に進む。
送信収集パケットが「ＳＹＮ」パケット以外である場合（ＮＯ）、処理はＳ３２３に進む。
【００５７】
＜Ｓ３２２＞
ネットワーク通信再現部４１２は、「ＳＹＮ」パケットのＴＣＰヘッダに設定されている各種情報をコネクション情報として記憶する。
例えば、ネットワーク通信再現部４１２は、以下に説明するＴＣＰ通信状況管理テーブル４９１にコネクション情報を設定する。ＴＣＰ通信状況管理テーブル４９１は再送用記憶部４９０に記憶されているものとする。
【００５８】
図１０は、実施の形態１におけるＴＣＰ通信状況管理テーブル４９１の構造図である。
実施の形態１におけるＴＣＰ通信状況管理テーブル４９１について、図１０に基づいて以下に説明する。
【００５９】
ＴＣＰ通信状況管理テーブル４９１には、コネクション情報として「コネクション番号」「クライアント情報（ＩＰ）」「クライアント情報（ＰＯＲＴ番号）」「ターゲット情報（ＩＰ）」「ターゲット情報（ＰＯＲＴ番号）」「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」が設定される。
【００６０】
「コネクション番号」は、コネクションの識別番号（通番）であり、ネットワーク通信再現部４１２により採番される。
【００６１】
「クライアントＩＰアドレス」および「クライアントＰＯＲＴ番号」は、「ＳＹＮ」パケットのＴＣＰヘッダに設定された「送信元ＩＰアドレス」および「送信元ポート番号」である。
「ターゲットＩＰアドレス」および「ターゲットＰＯＲＴ番号」は、「ＳＹＮ」パケットのＴＣＰヘッダに設定された「宛先ＩＰアドレス」および「宛先ポート番号」である。
【００６２】
「パケット情報取得時のシーケンス番号」は、ネットワークパケット情報２０２内の受信収集パケットのうち「ＳＹＮ／ＡＣＫ」パケットのＴＣＰヘッダに設定された「シーケンス番号」（初期シーケンス番号）である。
ネットワーク通信再現部４１２は、Ｓ３２２（図９）においてＴＣＰ通信状況管理テーブル４９１にコネクション情報を設定する際、ネットワークパケット情報２０２から当該コネクションの「ＳＹＮ／ＡＣＫ」パケットを検索し、当該「ＳＹＮ／ＡＣＫ」パケットのＴＣＰヘッダに設定されている「シーケンス番号」を「パケット情報取得時のシーケンス番号」に設定するものとする。コネクションは「送信元ＩＰアドレス」「送信元ポート番号」「宛先ＩＰアドレス」「宛先ポート番号」で識別される。
オンラインシステム１００ではクライアントがアプリケーション仮想サーバ２１０に「ＳＹＮ」パケットを送信するため、「ＳＹＮ」パケットの応答である「ＳＹＮ／ＡＣＫ」パケットはアプリケーション仮想サーバ２１０から送信された「受信収集パケット」としてネットワークパケット情報２０２に設定される。
【００６３】
「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」は、アプリケーション仮想再現サーバ２１０Ｂから受信したパケットのＴＣＰヘッダに基づいて設定される。
【００６４】
ネットワーク通信再現部４１２は、ネットワーク通信再現処理（Ｓ３００）において、図９に示す処理（Ｓ３１０〜Ｓ３３２）と並行して、アプリケーション仮想再現サーバ２１０Ｂから送信されたパケットを受信する。
そして、ネットワーク通信再現部４１２は、受信したパケットに基づいて「パケット再送時のシーケンス番号」「受信パケットのシーケンス番号」「受信パケットのデータ長」を更新する。
【００６５】
「パケット再送時のシーケンス番号」は、「ＳＹＮ」パケットを以降の処理で送信した後に、アプリケーション仮想再現サーバ２１０Ｂから受信した「ＳＹＮ／ＡＣＫ」パケットのＴＣＰヘッダに設定された「シーケンス番号」（初期シーケンス番号）である。
【００６６】
「受信パケットのシーケンス番号」は、コネクション確立後にアプリケーション仮想再現サーバ２１０Ｂから受信したＡＣＫパケットのＴＣＰヘッダに設定された「シーケンス番号」である。
【００６７】
「受信パケットのデータ長」は、コネクション確立後にアプリケーション仮想再現サーバ２１０Ｂから受信したパケットのＴＣＰのデータ長である。ＴＣＰのデータ長はＩＰヘッダに設定された「データ長」に基づいて算出される。
【００６８】
ネットワーク通信再現部４１２は、アプリケーション仮想再現サーバ２１０Ｂから受信したパケットに対応するコネクション情報がＴＣＰ通信状況管理テーブル４９１に設定されていない場合、受信したパケットのＴＣＰヘッダに基づいて、ＴＣＰ通信状況管理テーブル４９１に新たなコネクションのコネクション情報を追加する。
追加のコネクション情報として設定される項目は、「コネクション番号」「クライアント情報（ＩＰ）」「クライアント情報（ＰＯＲＴ番号）」「ターゲット情報（ＩＰ）」「ターゲット情報（ＰＯＲＴ番号）」「受信パケットのシーケンス番号」「受信パケットのデータ長」である。
「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」は設定できないため（また、不要であるため）、初期値（０）のままである。
【００６９】
図９に戻り、ネットワーク通信再現処理（Ｓ３００）の説明を続ける。
【００７０】
Ｓ３２２の後、処理はＳ３２５に進む。
【００７１】
＜Ｓ３２５＞
ネットワーク通信再現部４１２は、ＴＣＰ通信状況管理テーブル４９１に基づいて送信収集パケットのＴＣＰヘッダ（「ＡＣＫ番号（確認応答番号）」「チェックサム」）を編集する。
ネットワーク通信再現部４１２は、「ＡＣＫ番号」に「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」との差分を加算する。これにより、「ＡＣＫ番号」はアプリケーション仮想再現サーバ２１０Ｂとのコネクションに対応する「ＡＣＫ番号」を示す。
【００７２】
例えば、図１０のコネクション番号「１」のコネクションでは、「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」との差分が「６５４３（＝７７７７−１２３４）」である。したがって、ネットワーク通信再現部４１２は、送信収集パケットの「ＡＣＫ番号」に「６５４３」を加算する。
また、「パケット情報取得時のシーケンス番号」と「パケット再送時のシーケンス番号」とが同じである場合（初期値「０」を含む）、アプリケーション仮想サーバ２１０とのコネクションに対応している「ＡＣＫ番号」とアプリケーション仮想再現サーバ２１０Ｂとのコネクションに対応する「ＡＣＫ番号」とは同じであるため、「ＡＣＫ番号」の変更は不要である。
【００７３】
ネットワーク通信再現部４１２は、編集後の「ＡＣＫ番号」を含んだＴＣＰヘッダの設定値に基づいて「チェックサム」を再計算する。
【００７４】
Ｓ３２５の後、処理はＳ３３０に進む。
【００７５】
Ｓ３３０の説明の前に、Ｓ３２３に戻って説明を続ける。
【００７６】
＜Ｓ３２３＞
Ｓ３２１において送信収集パケットが「ＳＹＮ」パケット以外である場合（ＮＯ）、ネットワーク通信再現部４１２は、送信収集パケットのＴＣＰヘッダを参照し、送信収集パケットに対応するコネクション情報がＴＣＰ通信状況管理テーブル４９１に有るか判定する。
送信収集パケットに対応するコネクション情報がＴＣＰ通信状況管理テーブル４９１に有る場合、処理はＳ３２５に進む。
送信収集パケットに対応するコネクション情報がＴＣＰ通信状況管理テーブル４９１に無い場合、処理はＳ３２４に進む。
【００７７】
＜Ｓ３２４＞
ネットワーク通信再現部４１２は、送信収集パケットのＴＣＰヘッダに基づいて、ＴＣＰ通信状況管理テーブル４９１に新たなコネクションのコネクション情報を追加する。
追加のコネクション情報として設定される項目は、「コネクション番号」「クライアント情報（ＩＰ）」「クライアント情報（ＰＯＲＴ番号）」「ターゲット情報（ＩＰ）」「ターゲット情報（ＰＯＲＴ番号）」「受信パケットのシーケンス番号」「受信パケットのデータ長」である。
「パケット情報取得時のシーケンス番号」「パケット再送時のシーケンス番号」は設定できないため（また、不要であるため）、初期値（０）のままである。
Ｓ３２４の後、処理はＳ３２５に進む。
【００７８】
次に、Ｓ３３０から説明を続ける。
【００７９】
＜Ｓ３３０＞
ネットワーク通信再現部４１２は、送信収集パケットをアプリケーション仮想再現サーバ２１０Ｂへ送信可能か判定する。
ネットワーク通信再現部４１２は、Ｓ３２０で判定した送信収集パケットのプロトコルが「ＴＣＰ」である場合、以下の条件（１）と（２）とを満たしていれば送信収集パケットを送信可能と判定する。
ネットワーク通信再現部４１２は、Ｓ３２０で判定した送信収集パケットのプロトコルが「ＴＣＰ」以外である場合、以下の条件（１）を満たしていれば送信収集パケットを送信可能と判定する。
【００８０】
（１）前回の送信収集パケットの送信時からの経過時間が両送信収集パケットの送信時間間隔になった。
（２）送信収集パケットの送信前に受信すべきパケットをアプリケーション仮想再現サーバ２１０Ｂから受信済みである。
【００８１】
上記条件（１）について説明する。
ネットワーク通信再現部４１２は、前回処理した送信収集パケットの収集時刻と今回処理している送信収集パケットの収集時刻との時間差を両送信収集パケットの送信時間間隔として算出する。収集時刻はネットワークパケット情報２０２の設定値である。
ネットワーク通信再現部４１２は、前回の送信収集パケットの送信時からの経過時間と両送信収集パケットの送信時間間隔とを比較し、経過時間が送信時間間隔を過ぎていれば（一致を含む）上記条件（１）を満たすと判定する。各送信収集パケットの送信時刻は、後述するＳ３３１において記憶される。
【００８２】
上記条件（２）について説明する。
ネットワーク通信再現部４１２は、送信収集パケットの「ＡＣＫ番号」と送信収集パケットに対応するコネクション情報（４９１）の「受信パケットのシーケンス番号」「受信パケットのデータ長」とに基づいて、上記条件（２）を満たすか否かを判定する。
【００８３】
「ＡＣＫ番号」は「受信済データのシーケンス番号＋１」を示す。
「受信パケットのシーケンス番号」はアプリケーション仮想再現サーバ２１０Ｂから受信したパケットに設定されている先頭データのシーケンス番号を示す。
「受信パケットのデータ長」はアプリケーション仮想再現サーバ２１０Ｂから受信したパケットに設定されているデータのサイズを示す。
したがって、「ＡＣＫ番号」≦「受信パケットのシーケンス番号」＋「受信パケットのデータ長」であれば、上記条件（２）を満たす。
「ＡＣＫ番号」＞「受信パケットのシーケンス番号」＋「受信パケットのデータ長」であれば、上記条件（２）を満たさない。
【００８４】
ネットワーク通信再現部４１２は上記条件（１）を満たし、ＴＣＰの場合にはさらに上記条件（２）を満たすまで待つ。
上記条件（１）を満たし、ＴＣＰの場合にはさらに上記条件（２）を満たしたとき（ＹＥＳ）、処理はＳ３３１に進む。
【００８５】
＜Ｓ３３１＞
ネットワーク通信再現部４１２は、送信収集パケットをアプリケーション仮想再現サーバ２１０Ｂに送信し、送信時刻を記憶する。
Ｓ３３１の後、処理はＳ３３２に進む。
【００８６】
＜Ｓ３３２＞
ネットワーク通信再現部４１２は、ネットワークパケット情報２０２内の送信収集パケットを全て送信したか判定する。
ネットワーク通信再現部４１２は、Ｓ３１０においてネットワークパケット情報２０２から全てのパケットデータを取り出した場合にネットワークパケット情報２０２内の送信収集パケットを全て送信したと判定する。
ネットワークパケット情報２０２内の送信収集パケットを全て送信した場合（ＹＥＳ）、ネットワーク通信再現処理（Ｓ３００）は終了する。
ネットワークパケット情報２０２内の送信収集パケットを全て送信していない場合（ＮＯ）、処理はＳ３１０に戻る。
【００８７】
実施の形態１において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
【００８８】
仮想マシンを用いてサーバを構築し、一般的なＴＣＰ／ＩＰを用いてネットワーク通信を行うネットワークシステムのサーバアプリケーション（２１０）の障害を再現する。
障害再現方式では、事前に取得した仮想マシンのメモリ／ディスク等のスナップショット情報と、スナップショット取得後のネットワークを流れるパケットを取得したネットワークパケット情報とを用いる。
仮想化ソフトウェアをインストールした検証用サーバとパケット再送サーバからなる検証環境において、検証用サーバ上でスナップショット情報から障害発生前の仮想マシンを再生し、仮想マシンの再生完了タイミングをポーリングにより確認し、パケット再送サーバからネットワークパケット情報を送信してネットワーク通信を再現する。
これにより、障害発生までのサーバアプリケーションの動作を再現し、サーバアプリケーションの障害再現を行う。
【００８９】
これにより、サーバアプリケーションが動作中に任意のタイミングで取得したスナップショットからもアプリケーションの動作を再現するため、仮想マシンの再生完了と同期してネットワークパケット情報を送信することで、サーバアプリケーション動作中のネットワーク通信を再現し、動作途中の状態からの障害再現も実現できる。
【００９０】
そして、仮想マシンのスナップショット情報と、ネットワークを流れるパケット情報を用いてネットワーク通信を再現してサーバアプリケーションの障害を再現可能となることにより、障害再現試験を検証用の環境で行うことが可能となるため、障害再現のために、障害発生環境と同一の環境を用意する必要がなくなる。
【００９１】
また、仮想マシン再生タイミングに合わせて、パケット送信を行う機能を実現したことと、ＴＣＰ通信も含めたネットワーク通信の再現を実現したこととにより、アプリケーションの動作途中からの障害再現が可能となる。スナップショット情報とネットワークパケット情報を定期的に取得することにより、障害発生直前の状態から再現試験が可能となるため、障害解析にかかる時間を短縮可能である。
【００９２】
ＴＣＰ通信も含めたネットワーク通信の再現が可能となったことで、仮想マシンを使用しない環境においても、ネットワークパケット情報を取得しておくことによって、検証用の環境で障害再現が可能となる。
【００９３】
実施の形態２．
アプリケーションサーバ（アプリケーション仮想サーバ２１０）とパケット収集サーバ（情報収集仮想サーバ２２０）とのシステム時刻のずれに応じて、送信収集パケットの送信タイミングを補正する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項は実施の形態１と同様である。
【００９４】
オンラインシステム１００（図１参照）では、スナップショット２０１の取得時にアプリケーション仮想サーバ２１０からネットワーク１１０にアプリケーション仮想サーバ２１０のシステム時刻を示すパケットデータが送出されるものとする。
例えば、オンラインシステム１００において、スナップショット２０１の取得時刻に情報収集仮想サーバ２２０、クライアントまたはその他の管理端末（図示省略）からアプリケーション仮想サーバ２１０へＩＣＭＰタイムスタンプ要求を送信することにより、アプリケーション仮想サーバ２１０にＩＣＭＰタイムスタンプ応答を返送させる運用を行う。
【００９５】
図１１は、実施の形態２におけるネットワークパケット情報２０２の一例である。
図１１に示すように、ネットワークパケット情報２０２にはＩＣＭＰタイムスタンプ要求およびＩＣＭＰタイムスタンプ応答が含まれるものとする。
【００９６】
図１２は、実施の形態２におけるターゲット同期処理（Ｓ２００）のフローチャートである。
実施の形態２におけるターゲット同期処理（Ｓ２００）について、図１２に基づいて以下に説明する。
【００９７】
図１２は、実施の形態１（図８参照）のフローチャートにＳ２２０〜Ｓ２２３を追加したものである。
以下、Ｓ２２０〜Ｓ２２３について説明する。
【００９８】
＜Ｓ２２０＞
Ｓ２１１においてネットワークパケット情報２０２内の先頭収集パケットが「送信収集パケット」である場合、ターゲット同期部４１１は、ネットワークパケット情報２０２にＩＣＭＰタイムスタンプ応答のパケットデータが含まれているか判定する。
ＩＣＭＰタイムスタンプ応答が有る場合、処理はＳ２２１に進む。
ＩＣＭＰタイムスタンプ応答が無い場合、処理はＳ２１３に進む。
【００９９】
＜Ｓ２２１＞
ターゲット同期部４１１は、Ｓ２１３と同じく、ＩＣＭＰタイムスタンプ要求をアプリケーション仮想再現サーバ２１０Ｂに送信し、アプリケーション仮想再現サーバ２１０ＢからのＩＣＭＰタイムスタンプ応答の受信を待ち、ＩＣＭＰタイムスタンプ応答からアプリケーション仮想再現サーバ２１０Ｂのシステム時刻を取得する。
Ｓ２２１の後、処理はＳ２２２に進む。但し、Ｓ２２２はＳ２２１と並行して（ＩＣＭＰタイムスタンプ応答待ちの間に）実行されてもよい。
【０１００】
＜Ｓ２２２＞
ターゲット同期部４１１は、ネットワークパケット情報２０２内のＩＣＭＰタイムスタンプ応答の収集時刻とそのＩＣＭＰタイムスタンプ応答に設定されているアプリケーション仮想サーバ２１０のシステム時刻との時間差を収集時刻誤差として算出する。
例えば、アプリケーション仮想サーバ２１０のシステム時刻が「１２時００分１０秒０００ミリ秒」であり、収集時刻が「１２時００分１０秒１００ミリ秒」である場合、収集時刻誤差は「−１００ミリ秒」である。
Ｓ２２２の後、処理はＳ２２３に進む。
【０１０１】
＜Ｓ２２３＞
ターゲット同期部４１１は、Ｓ２２１において取得したアプリケーション仮想再現サーバ２１０Ｂのシステム時刻とＳ２２２において算出した収集時刻誤差とに基づいて、ネットワークパケット情報２０２内の先頭収集パケット（送信収集パケット）の送信タイミングを待つ。
【０１０２】
このとき、ターゲット同期部４１１は、先頭収集パケットの収集時刻を収集時刻誤差で補正した補正時刻を算出し、アプリケーション仮想再現サーバ２１０Ｂのシステム時刻と補正時刻とを比較する。
【０１０３】
例えば、収集時刻が「１２時００分０５秒１００ミリ秒」であり、収集時刻誤差が「−１００ミリ秒」である場合、補正時刻は「１２時００分０５秒０００ミリ秒」である。
補正時刻は、先頭収集パケットが送信されたときのアプリケーション仮想サーバ２１０のシステム時刻を示す。
【０１０４】
ターゲット同期部４１１は、先頭収集パケットの補正時刻がアプリケーション仮想再現サーバ２１０Ｂのシステム時刻以降の時刻である場合、アプリケーション仮想再現サーバ２１０Ｂのシステム時刻と先頭収集パケットの補正時刻との時間差を待ち時間として算出し、待ち時間を経過した時点を送信タイミングとして待ち時間の経過を待つ。
先頭収集パケットの補正時刻がアプリケーション仮想再現サーバ２１０Ｂのシステム時刻以前の時刻である場合、ターゲット同期部４１１は、比較した時点を送信タイミングとする。
【０１０５】
送信タイミングになったとき、ターゲット同期処理（Ｓ２００）は終了する。
【０１０６】
ターゲット同期処理（Ｓ２００）を実行するか否かを利用者に判断させてもよい。
例えば、パケット再送サーバ４００の実行パラメータとして「同期要求」を設ける。
【０１０７】
図１３は、実施の形態２におけるターゲット同期処理（Ｓ２００）のフローチャートの別例である。
図１３は、図１２のフローチャートにＳ２３０を追加したものである。
【０１０８】
＜Ｓ２３０＞
ターゲット同期処理（Ｓ２００）の始めに、ターゲット同期部４１１は、パケット再送サーバ４００の実行パラメータを参照し、同期要求の設定有無を判定する。
同期要求の設定が有る場合、処理はＳ２１０に進み、同期要求の設定が無い場合、ターゲット同期処理（Ｓ２００）は終了する。
【０１０９】
実施の形態２において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
【０１１０】
仮想マシン（アプリケーション仮想サーバ２１０）のメモリ／ディスク等のスナップショット情報を取得する際に、取得完了タイミングの目印としてＩＣＭＰタイムスタンプ要求を用いる。これにより、このパケットからスナップショット取得完了時点の仮想マシンのシステム時刻を入手する。次に、仮想マシン（アプリケーション仮想再現サーバ２１０Ｂ）の再生完了タイミングをＩＣＭＰタイムスタンプ要求でポーリングすることにより、再生完了時のシステム時刻も入手する。このシステム時刻を元にパケット送信開始時刻を決定することで、実際に動作していたときと同じタイミングでパケットを送信してサーバアプリケーションの障害再現を行う。
【０１１１】
また、仮想マシンの再生完了タイミングに同期せずに、任意のタイミングでパケットを送信する。
【０１１２】
実施の形態３．
パケット再送サーバを仮想マシンとして実装し、１台のサーバ装置で障害を再現させる形態について説明する。
以下、実施の形態１また実施の形態２と異なる事項について主に説明する。説明を省略する事項は実施の形態１または実施の形態２と同様である。
【０１１３】
図１４は、実施の形態３における障害再現システム１０１の構成図である。
実施の形態３における障害再現システム１０１の構成について、図１４に基づいて以下に説明する。
【０１１４】
障害再現システム１０１は、１台のサーバ装置（検証用サーバ３００）を有する。パケット再送サーバ４００およびネットワーク１１１は不要である。
【０１１５】
検証用サーバ３００は、アプリケーション仮想再現サーバ２１０Ｂ、検証用仮想マシンモニタ部３１０および検証用記憶部３９０の他に、パケット再送仮想サーバ３２０を備える。
パケット再送仮想サーバ３２０は、パケット再送サーバ４００に相当する仮想マシンであり、再送用仮想記憶部３２９にネットワークパケット情報２０２を記憶していると共に実行トレース再生部４１０を備える。
アプリケーション仮想再現サーバ２１０Ｂとパケット再送仮想サーバ３２０とは、パケットデータをネットワーク１１１を介して送受信する代わりに、パケットデータを互いの入出力インタフェース（所定のメモリ領域）を用いて入出力する。
【０１１６】
実施の形態３において、例えば、以下のようなサーバアプリケーションの障害再現方式について説明した。
【０１１７】
検証環境として検証用サーバのみを用意し、検証用サーバ上に仮想マシンとしてパケット再送サーバを配置し、サーバアプリケーションの障害再現を行う。これにより、実際のネットワークを介することなく、検証用サーバ１台でも障害再現を行うことができる。
【０１１８】
実施の形態４．
ＴＣＰ／ＩＰネットワークの通信を再現する通信再現システムについて説明する。
【０１１９】
図１５は、実施の形態４における通信再現システム１０２の構成図である。
【０１２０】
通信再現システム１０２は、ネットワーク通信再現装置５００（通信再現装置の一例）とターゲットサーバ１４０（パケット処理装置の一例）とを有する。ターゲットサーバ１４０は実施の形態１におけるアプリケーション仮想サーバ２１０（アプリケーション仮想再現サーバ２１０Ｂ）に相当する。ネットワーク通信再現装置５００は図４に示したハードウェアを備える。
ネットワーク通信再現装置５００とターゲットサーバ１４０とは通信伝送路１１２で接続されている。
【０１２１】
ネットワーク通信再現装置５００は、データ読み込みインタフェース５１０、通信ポート５２０、記憶装置５９０およびネットワーク通信再現部４１２を備える。ネットワーク通信再現部４１２は実施の形態１で説明した機能である。
データ読み込みインタフェース５１０は、外部デバイス（磁気ディスク装置、ドライブ装置、ネットワークに接続された通信ボード）からデータを読み込む機器である。
記憶装置５９０には、データ読み込みインタフェース５１０により読み込まれたネットワークパケット情報２０２が記憶されている。また、記憶装置５９０にはネットワーク通信再現部４１２により編集されるＴＣＰ通信状況管理テーブル４９１が記憶される。ネットワークパケット情報２０２およびＴＣＰ通信状況管理テーブル４９１は、実施の形態１で説明したデータである。
通信ポート５２０は、ターゲットサーバ１４０と通信伝送路１１２を介して通信する機器である。
【０１２２】
ネットワーク通信再現部４１２は、パケット再送制御部５３１、パケット生成部５３２、非ＴＣＰパケット送信部５３３、ＴＣＰパケット送信部５３４（第１のタイミング決定部、第２のタイミング決定部、パケット入力部の一例）およびキャプチャ部５３５を備える。
パケット再送制御部５３１は、実施の形態１（図９参照）で説明したＳ３１０、Ｓ３１１、Ｓ３２０〜Ｓ３２４、Ｓ３３２を実行する。ターゲットサーバ１４０（ＩＰアドレス）が指定されていない場合、パケット再送制御部５３１は、ネットワークパケット情報２０２内のパケットデータを全て「送信収集パケット」として扱う。
パケット生成部５３２は、実施の形態１（図９参照）で説明したＳ３２５を実行する。
非ＴＣＰパケット送信部５３３は、プロトコルが「ＴＣＰ」でない送信収集パケットについて実施の形態１（図９参照）で説明したＳ３３０およびＳ３３１を実行する。
ＴＣＰパケット送信部５３４は、プロトコルが「ＴＣＰ」である送信収集パケットについて実施の形態１（図９参照）で説明したＳ３３０およびＳ３３１を実行する。
キャプチャ部５３５は、ターゲットサーバ１４０から受信したパケットデータに基づいてＴＣＰ通信状況管理テーブル４９１のコネクション情報を編集する。
【０１２３】
実施の形態１〜実施の形態３のネットワーク通信再現部４１２はパケット再送制御部５３１〜キャプチャ部５３５を備えている。
【０１２４】
実施の形態４において、例えば、以下のようなネットワーク通信再現方式について説明した。
事前に取得したネットワークパケット情報をネットワークに送信し、ＴＣＰ通信も含めたネットワーク通信を再現する。
ネットワーク通信再現方式には以下の手段が備わる。
パケットを送信する対象となるサーバ（ターゲットサーバ１４０）からの受信収集パケットがネットワークパケット情報中に存在した場合は、該当するパケットを破棄する手段（パケット再送制御部５３１）。
ＴＣＰプロトコルのパケットに対してコネクション接続を行う手段（パケット再送制御部５３１）。
コネクション接続に成功したクライアントとサーバのＩＰアドレスとＰＯＲＴ番号、コネクション接続時にサーバから送られてきた初期シーケンス番号、ネットワークパケット情報中の初期シーケンス番号をＴＣＰ通信状況管理部（ＴＣＰ通信状況管理テーブル４９１）に登録して管理する手段（パケット再送制御部５３１）。
コネクション接続済みのパケットのＴＣＰヘッダをＴＣＰ通信状況管理部の情報を元に編集してパケットを生成する手段（パケット生成部５３２）。
ＴＣＰ通信状況管理部の情報を元にパケット送信可能となるまで待つための手段（ＴＣＰパケット送信部５３４）。
サーバからのパケット受信時に、ＴＣＰ通信状況管理部に受信収集パケットのシーケンス番号とデータ長を登録する手段（キャプチャ部５３５）。
ＴＣＰプロトコル以外は、時間情報とパケットデータを含むネットワークパケット情報からパケット送信時間を決定して待つための手段（非ＴＣＰパケット送信部５３３）。
生成したパケットをネットワークに送信する手段（通信ポート５２０）。
【０１２５】
さらに、ネットワーク通信再現方式には以下の手段が備わる。
コネクション接続処理を行っていないＴＣＰプロトコルのパケットがネットワークパケット情報の中に存在した場合、ＴＣＰ通信状況管理部に、パケット送信時に新たにコネクション接続を行ったコネクションと区別がつくように管理する手段（キャプチャ部５３５）。
新たにコネクション接続を行っていないパケットに対しては、ＴＣＰヘッダの編集を行わない手段（パケット生成部５３２）。
これにより、ネットワーク通信再現装置からのパケット送信時にコネクション接続を行ったパケットと行っていないパケットが混在しても、ネットワーク通信を再現できる。
【０１２６】
さらに、ネットワーク通信再現方式には以下の手段が備わる。
複数のコネクション接続を管理する手段（ＴＣＰ通信状況管理テーブル４９１）。
これにより、複数のコネクションが接続された状況でもネットワーク通信を再現できる。
【０１２７】
さらに、ネットワーク通信再現方式には以下の手段が備わる。
パケットを送信する対象となるサーバが指定されていない場合、ネットワークパケット情報に含まれるすべてのパケットに対して、時間情報とパケットデータを含むネットワークパケット情報からパケット送信時間を決定して待つための手段（パケット再送制御部５３１）。
生成したパケットをネットワークに送信することで、ネットワーク通信を再現する手段（非ＴＣＰパケット送信部５３３、ＴＣＰパケット送信部５３４）。
【０１２８】
ＴＣＰパケット送信部５３４は、ＴＣＰパケットを送受信する通信装置（アプリケーションサーバ２００）へネットワークを介して送信されると共に前記ネットワークから対象パケットとして収集された複数のＴＣＰパケット（ネットワークパケット情報２０２に含まれるＴＣＰパケット）それぞれの収集時刻に基づいて、ＴＣＰパケットを入出力するパケット処理装置（ターゲットサーバ１４０）へ前記対象パケットを入力する第１のタイミング（実施の形態１で説明した条件（１）を満たすタイミング）をＣＰＵを用いて判定する。
さらに、ＴＣＰパケット送信部５３４は、前記対象パケットのＴＣＰヘッダに設定された応答確認番号と、前記パケット処理装置から出力されたＴＣＰパケットのデータ量とに基づいて前記パケット処理装置へ前記対象パケットを入力する第２のタイミング（実施の形態１で説明した条件（２）を満たすタイミング）をＣＰＵを用いて判定する。
そして、ＴＣＰパケット送信部５３４は、前記第１のタイミングと前記第２のタイミングとのうち遅い方のタイミングで前記対象パケットを前記パケット処理装置に入力して前記通信装置による各対象パケットの受信処理を前記パケット処理装置に再現させる。
【符号の説明】
【０１２９】
１００  オンラインシステム、１０１  障害再現システム、１０２  通信再現システム、１１０  ネットワーク、１１１  ネットワーク、１１２  通信伝送路、１２０  クライアントＡ、１３０  クライアントＢ、１４０  ターゲットサーバ、２００  アプリケーションサーバ、２０１  スナップショット、２０２  ネットワークパケット情報、２１０  アプリケーション仮想サーバ、２１０Ｂ  アプリケーション仮想再現サーバ、２１１  アプリケーション部、２２０  情報収集仮想サーバ、２２１  情報収集部、２２９  収集情報記憶部、２３０  オンライン仮想マシンモニタ部、２３１  スナップショット取得部、３００  検証用サーバ、３１０  検証用仮想マシンモニタ部、３１１  スナップショット再生部、３２０  パケット再送仮想サーバ、３２９  再送用仮想記憶部、３９０  検証用記憶部、４００  パケット再送サーバ、４１０  実行トレース再生部、４１１  ターゲット同期部、４１２  ネットワーク通信再現部、４９０  再送用記憶部、４９１  ＴＣＰ通信状況管理テーブル、５００  ネットワーク通信再現装置、５１０  データ読み込みインタフェース、５２０  通信ポート、５３１  パケット再送制御部、５３２  パケット生成部、５３３  非ＴＣＰパケット送信部、５３４  ＴＣＰパケット送信部、５３５  キャプチャ部、５９０  記憶装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ドライブ装置、９０６  プリンタ装置、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信ボード、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群。
【図１】
2010205011.tif 000003
【図２】
2010205011.tif 000004
【図３】
2010205011.tif 000005
【図４】
2010205011.tif 000006
【図５】
2010205011.tif 000007
【図６】
2010205011.tif 000008
【図７】
2010205011.tif 000009
【図８】
2010205011.tif 000010
【図９】
2010205011.tif 000011
【図１０】
2010205011.tif 000012
【図１１】
2010205011.tif 000013
【図１２】
2010205011.tif 000014
【図１３】
2010205011.tif 000015
【図１４】
2010205011.tif 000016
【図１５】
2010205011.tif 000017