1 つのプロジェクトを作成しました。一度に多くの人が私のプロジェクトを使用します。エラーが発生した場合は、メモリ ストリームを使用してオブジェクトを作成してファイルに書き込みます。全員がエラーを受け取ると、その数のオブジェクトが作成され、すべてのオブジェクトが一度に同じファイルにエラーを書き込みます。これに問題やパフォーマンスの問題はありますか?
3277 次
4 に答える
6
- ファイルへの書き込みにメモリ ストリームを使用する必要はないようです。ファイルを開く/作成し、ファイルに直接書き込みます。さらに良いこと:ログ ファイルへの同時アクセスを処理する log4net などのログ用ライブラリを使用します。ロギングは標準的なタスクであり、一からやり直す必要はありません。
- パフォーマンスが心配な場合は、負荷テストを行い、実際に問題があるかどうかを確認してください。
于 2010-10-05T07:56:14.967 に答える
1
メモリ ストリームは、バイト配列の単なる Stream インターフェイスです。
したがって、これは実際には非常に高速です。
ただし、バイト配列全体がメモリに保持されるため、メモリ割り当てが多すぎるためにパフォーマンスの問題が発生する可能性があります。
実際に問題が発生するかどうかは、「人数」の大きさとメモリ ストリーム内のデータ量によって異なります。
「多数の人」と同じファイルに書き込む場合は、ロックの問題にも注意してください。
于 2010-10-05T07:56:45.100 に答える
1
ファイルのロック/競合が思い浮かびます。ログ ディレクトリを作成して、すべてのログ書き込みで独自のファイルを作成することはできませんか? または、.NET トレース機能、またはログ フレームワークとして log4net、Common.Logging、dotTrace などを使用して、これらの問題を取り除きます。
于 2010-10-05T07:56:57.677 に答える
0
ストリームを共有し、ログ ファイルへのアクセス中にロックを使用します。終了時にストリームを閉じることを忘れないでください。
static Object _locker = new Object;
static FileStream fs = new FileStream(...);
// your code
lock(_locker)
{
fs.Write(...) // write to stream
}
于 2010-10-05T09:02:16.543 に答える