Windows Server 2008 R2 Standard Edition で Windows サービスを実行しています。これは、バイナリ ファイルを処理し、処理されたファイルを同じボリューム上の別のフォルダーに移動する .NET 4.0 アプリケーションです。ファイルシステムはNTFSです。問題は次のコードにあります。
try
{
if (File.Exists(srcFileName))
{
File.Move(srcFileName, dstFileName);
}
}
catch (Exception ex)
{
log.Error("Failed to move file.", ex);
}
パスsrcFileName
とdstFileName
の形式はD:\src_dir\fileX.bin
、 とD:\dst_dir\fileX.bin
です。これlog
は log4net ロガー オブジェクトです。で処理するためにファイルが読み取られますFile.ReadAllBytes(srcFileName)
。
問題は、ほとんどの場合、コードは期待どおりに機能しますが、一部のファイルが宛先フォルダーに移動されずにコピーされ、ログにエラーが記録されないことがあります。ログを見ると、すべて正常に動作しているように見えますが、一部のファイルがソース フォルダーと宛先フォルダーの両方に表示されます。RAM の使用量が (利用可能な 32 GB から) 30 GB を超え、平均ディスク キューが 2 を超えた場合に発生するように見えるため、この問題はサーバーの負荷に関連しているようです。
この動作の原因、特に移動が失敗したときの例外がないことを考えていただければ幸いです。移動操作が正常に完了したことを確認する方法はありますか?