2

レガシー アプリケーションの 1 つが毎日例外をスローし続ける理由を突き止めようとしています。これは VB.Net Windows サービスであり、Microsoft.VisualBasic.Logging.FileLogTraceListenerクラスを使用してログを記録します。

ただし、次の例外がスローされますが、何が原因であるかはわかりません。

System.IO.IOException: The handle is invalid.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.get_Length()
at Microsoft.VisualBasic.Logging.FileLogTraceListener.ReferencedStream.get_FileSize()
at Microsoft.VisualBasic.Logging.FileLogTraceListener.ResourcesAvailable(Int64 newEntrySize)
at Microsoft.VisualBasic.Logging.FileLogTraceListener.WriteLine(String message)

現時点では 1 日に 1 回スローされるようですが、問題は、すべてがログに記録されていることを確認する必要があることです。この場合、例外をキャッチして飲み込み、ログを省略することは本当に受け入れられません。

この Windows エラー メッセージ (ERROR_INVALID_HANDLE - 0x06) の考えられる原因を調べてみましたが、特定のものが見つからないようです。

これを診断しようとしている助けがあれば幸いです!

4

1 に答える 1

0

問題の診断を支援するために、以下を確認してください。

  • トレースのパフォーマンスを向上させるためにトレース UseGlobalLock を無効にする

    <configuration>
    <system.diagnostics>
    <trace useGlobalLock="false" />
    <sources>
    <source name="MySource" switchValue="All">
    <listeners> ...

  • multi-Threaded/AppDomain/Services からのロギングを除外します。

  • Perfmonチェックを使用して、集中的な IO 操作が同時に発生しているかどうかを確認します。たとえば、ディスクのバックアップ中です...

  • ドライバーが最新であることを確認してください。

  • 上記が失敗し、根本的な原因を見つけたい場合は、adplus を使用してメモリ ダンプを取得し、 WinDBGと SOS を使用して根本的な原因を確認する必要があります。

それでも問題を絞り込めない場合は、サーバーのディスク ドライブを交換します

于 2013-03-29T06:20:03.930 に答える