我已經按照你的建議開發了TCP服務器:High performance TCP server in C#高性能C#TCP服務器的問題:無連接可以作出,因爲目標機器積極地拒絕它
它是基於asynchron模式。
我還開發了一個壓力測試應用程序來測試其性能。我的服務器可以從我的壓力測試應用程序中平行地獲得數千個連接,可以解析數據並將其保存到我的數據庫。
當我強調我的服務器,我可以得到「System.Net.Sockets.SocketException」因爲目標機器主動拒絕它「沒有連接可以做」錯誤從我的服務器,所以我必須重新連接到它。用5000個併發連接測試它,我必須再次嘗試連接,因爲這個問題有10-20%的連接,如果我用10K併發連接測試它,它可以是30-40%。有時它可以 - 很少 - 看起來它不能處理連接接受:我從我的壓力測試中創建新的連接,與我的測試機器一樣嚴重 - 每秒大約120個連接
那麼,什麼會導致這種異常?如何處理它?在服務器端執行什麼以避免這個問題?如何調優TCP連接accept?
在此先感謝!
我認爲這是壓力測試的重點=確保您的機器可以處理負載。這就是你如何發現當你接近容量極限時會發生什麼。 – DOK 2011-06-04 13:21:56
是的,但是我想讓它變得更好 - 如果可能的話...... – Tom 2011-06-04 13:47:05
如果您想讓您的軟件更好,請確保它正確處理異常。你不會阻止/避免它們。 – 2011-06-04 15:56:25