最近、人気のある昔の手の魔法のコードの多くを引き継いだし、ログを回復するための時間が大幅に不足を発見しました。不慣れなlog4jのために、しかし、あなたは確かに間違った推測ログと関連する同じlog4jの構成マルチプロセス使用を行くことができます。最終的には明確なロジックを撫で繰り返し調査、後。リカバリディスクの本論文では、調査プロセス。
まず、特性評価
背景ストーリー:
プロジェクトは、複数のエントリがあります。彼らは常に、通常のシングルタスクのスケジューリングなどの処理を開始し、終了している間に、フォームを実行しているバックグラウンド・プロセスを実行するために継続しながら、それはメッセージを取得します。言い換えれば、複数のプロセスと同じプロジェクトを同時に実行し、同じlog4jの設定を使用しています。
以下では、デーモンプロセスAと呼ばれる、一般的なプロセスは、プロセスBです。、B短い実行時間バックグラウンドで継続的に実行されます。
| <----------------- A ------------------- ...... | < - B - > | | <--- B ---> | | < - B - > |
原因:
結果を操作し、Bが一致していない処理することが予想され、あなたはB.の問題ログの位置をトラブルシューティングする必要があります
アメージング現象:
1)一部にはないいくつかのBをログに記録がありますが、法律は明らかに表示されませんでした。
2)一部のBは、いくつかの不完全、完全なログ。
3)Bログの唯一の最後の数時間、ログファイルが実際に時間をかけてBに書き込まれるが消えます。
4)履歴ログ、大半の日付のみBログが、個々のログがたくさんあります。
第二に、内部
A / Bの各ログ・ポインタは、それぞれ、ログ・ファイル、互いのファイルポインタ独立し、各ライトバックを追加するために開かれます。二つの問題が生じ:
質問1:
遅い書き込みA、B高速書き込み(ビジネス現実)による、Bファイルのappendの両端の平均、および近隣のBには、AとBが徐々に開始スクロールページまでのログをカバーするようにします。
問題2:
次の自然の夜12時に切り替えるときBは、この時点で実行されている場合、タブがあり、ローリングスタート、その後、AおよびBは、それぞれのポインタを持っています。
Aが最初に書かれた場合は、後の2つのスクロールのページは、A log.yesterdayの書き込みに、そしてBは、書き込みにログインするには、タスクが完了して終了した後、ハンドルを解放します。新しいBはログに書き込みを続けます。
Bの書き込みはまず、2回ページをスクロールした後、Aは、書き込み、タスクが完了して終了した後、ハンドルを解放するために、書き込みlog.yesterdayのBにログインする場合。新しいBはログに書き込みを続けます。
いずれにせよ、本当のlog.yesterdayはカバーされています。
|
1日目
|
2日目
|
3日目
|
Day4
|
day5
|
day6
|
---|---|---|---|---|---|---|
仮説 |
最初の書き込み
|
最初の書き込み
|
書き込みにB
|
書き込みにB
|
最初の書き込み
|
|
ログ |
A + Bの1日目
|
Bの2日目
|
Bの3日目
|
A + Bの他のday4
|
A + Bの他のday5
|
Bのday6
|
log.day1 |
|
Aの2日目
|
Aの2日目
|
Aの2日目
|
Aの2日目
|
Aの2日目
|
log.day2 |
Aの3日目
|
Aの3日目
|
Aの3日目
|
Aの3日目
|
||
log.day3 |
day4最初のB
|
day4最初のB
|
day4最初のB
|
|||
log.day4 |
day5最初のB
|
day5最初のB
|
||||
log.day5 |
Aのday6
|
日D(D <= T-2)のみ4例ログ:(現在の日付のT日)
①最初のD + Bを記録し1日(B-日スパンので、D + 1 2009あり、およびBを書きます)
②(B日スパンためD + 1 2009があり、そしてAは、最初の書き込み)全てのD + Aの1日の記録
(D-B日最初の書き込みには、そこにはB-日スパンがなく、そしてためD + 1日)③全てカバーされていないB A + D日間記録
全ての第1の非B D-日の④レコード(D + 1日そこにはB-日スパンはなく、D-デイAが最初に書かれたので)
観測された現象に沿って。
行われ