我有一個應用程序有很多線程處理數據。作爲此處理的一部分,它正在將一個小文件寫入網絡共享。我創建使用以下代碼的FileStream:C#創建FileStream到網絡共享多線程應用程序緩慢
using (var fileStream = new FileStream("\\server\path\etc", FileMode.Create, FileAccess.Write, FileShare.None))
在高負載下(下每秒100個文件寫入),因此FileStream的創建可能需要很長的時間(超過60秒)。這發生在應用程序在高負載下運行幾分鐘後。
創建FileStream時,必須有某些內容阻塞該線程。我想也許線程被阻止試圖創建一個連接到文件共享。我通過Process Explorer檢查了我的進程,但找不到到文件服務器的TCP連接。所以我猜測SMB連接到文件服務器不是通過TCP。
有沒有人有一個想法是什麼問題,或者我如何做不同的事情來實現更好的性能?
您是否嘗試過在本地進行測試......以驗證您的邏輯中是否存在錯誤,或者它是否是真正的網絡問題 – MethodMan 2011-12-23 16:24:52
好點。我應該在本地嘗試,看看它是否有相同的延遲。我只是假定它與寫入文件共享有關。 – Mas 2011-12-25 13:35:46
我已經嘗試將路徑指向本地路徑,並且此性能問題不存在。奇怪的是,有時寫入文件共享工作正常。我懷疑由於這個文件共享是其他人也使用的服務器,所以這個問題可能只發生在其他用戶的服務器負載很大時。但是,這會導致FileStream創建非常慢嗎? – Mas 2012-01-02 12:35:37