1

結果とエラーをログに記録するために、コードで log4js を使用しています。プログラムは、最終的なコンソール出力が作成されるまで約 2.5 時間実行され、その後、ログファイルの書き込みが完了するまでに数時間かかります。ログは現在 6 時間 (アルゴリズム自体が終了してから) 書き込まれており、ファイルサイズは 100 MB です。ログは約 1,500 万行になります (完了時)。

ログがこれほど遅く書き込まれるのは正常ですか? log4js を使用するときに確認できる「標準的な」間違いはありますか?

知りたい場合: プログラムは 8 GB RAM と SSD ドライブを搭載した Intel i5 で実行されているため、ハードウェアに問題はないと思います。

他にどのような情報を提供できるかわかりません。何か知りたいことがあれば、事前に尋ねてください。

4

1 に答える 1

0

Dropbox は良い候補のように思えます。ウイルス対策ソフトウェアも干渉する可能性があります。

まず、PC で利用可能なさまざまな構成のミニ log4jsベンチマークを作成して、システムの能力を確認し、それをアプリケーションのパフォーマンスと比較します。

var Benchmark = require('benchmark');
var log4js    = require('log4js');

log4js.clearAppenders();
log4js.loadAppender('file');

log4js.addAppender(log4js.appenders.file('NUL'), 'nulnulnul');
var lognul    = log4js.getLogger('nulnulnul');

log4js.addAppender(log4js.appenders.file('c:/your_dropbox/test.log'), 'normallog');
var lognorm   = log4js.getLogger('normallog');

log4js.addAppender(log4js.appenders.file('c:/tmp/test.log'), 'nodropbox');
var lognodr   = log4js.getLogger('nodropbox');

log4js.addAppender(log4js.appenders.file('c:/virus-exception/test.log'), 'nodropvir');
var lognodv   = log4js.getLogger('nodropvir');


var suite     = new Benchmark.Suite;

// add tests
suite.add('Log#Nul', function() {
  lognul.info("Some lengthy nulnulnul info messages");
})
.add('Log#normal', function() {
  lognorm.info("Some lengthy normallog info messages");
})
.add('Log#NoDropbox', function() {
  lognodr.info("Some lengthy nodropbox info messages");
})
.add('Log#NoVirusOrDropbox', function() {
  lognodv.info("Some lengthy nodropvir info messages");
})
// add listeners
.on('cycle', function(event) {
  console.log(String(event.target));
})
.on('complete', function() {
  console.log('Fastest is ' + this.filter('fastest').pluck('name'));
})
// run async
.run({ 'async': false });

Dropbox またはウイルス ソフトウェアが問題ではない場合、プロセスの実行中にシステムで何が起こっているかを確認するのに役立つ 2 つのWindows Sysinternalツールがあります。

Process Explorer - 全体的なタスク マネージャー/パフォーマンス ビューアー

システムの全体像を表示して、どのプロセスが何をしているかを確認できます。特定のプロセスにドリルダウンすることもできます (右クリック/プロパティ)。

Process Monitor - プロセスのイベント プロファイラー。

Process Monitor は、プロセスが行うすべてのシステム コールのログ ファイルのようなものです。特定のプロセスまたは呼び出しにフィルターをかけることができるので、Dropbox と Node.js プロセスを監視し、Dropbox が機能している間に問題のファイルへのアクセスがインターリーブされているかどうかを確認できます。

于 2014-08-25T08:19:31.303 に答える