Windows
監視文件伺服器的臨時文件鎖定
我有一個 IIS 網路服務(商業產品),它使用 UNC 將文件寫入遠端 Windows 文件伺服器。
有時,特別是在批量寫入大量小文件時,該過程會失敗。事件日誌顯示該程序因“該程序無法訪問該文件,因為它正被另一個程序使用”而失敗。
當我去查看文件時,無論鎖定它都不再鎖定它,我可以毫無問題地寫入它。
所以有些東西暫時鎖定了文件。
我不能使用 Process Monitor、OpenFiles 等,因為我需要在問題隨機和暫時發生時發現它。
我無法監控特定文件,因為 Web 服務每次都會寫入全新的文件。但它們被寫入特定的頂級文件夾和隨機子文件夾。
這聽起來很像 AntiVirus,但我們的 McAfee 已在所有相關機器上禁用了 OnAccess 掃描。
可以在伺服器上執行一些東西來監視文件鎖定失敗錯誤/事件並在它們發生時擷取程序資訊嗎?
如何在寫入文件時擷取哪個程序暫時鎖定文件?
我認為您應該考慮在文件伺服器上使用 procmon,並使用以下設置:
File -> Backing Files -> “Use file named:” 並選擇一個有足夠可用磁碟空間的路徑。(通過使用備份文件,您可以避免填滿伺服器的虛擬記憶體)。
過濾器:創建一個或多個過濾器以匹配包含文件的文件夾或根目錄(通常為“路徑”“開始於”路徑)
過濾器 -> 刪除過濾的事件
然後,開始擷取並查看您的過濾器是否正常工作。您可以根據事件的數量調整選項 - >“歷史深度”。