我知道Index對象的邊界錯誤之外的一個主要原因是線程衝突。 (同時閱讀和寫同一詞典)然而,我遇到了一個令人困惑的案例,那裏的線程衝突並不是一個足夠的解釋。Index的替代原因超出了.Net字典中數組的邊界
以下是這種情況: 我已經編寫了一些代碼,以不安全的方式爲多線程處理實現Dictionary。
該代碼已作爲Web服務實現到兩臺服務器Server A和Server B.服務器通過負載均衡器訪問,負載均衡器以循環方式向服務器A和B發送請求。
現在,這裏是棘手的部分。錯誤只出現在服務器A上,而從不在服務器B上。根據我們的硬件團隊,兩臺服務器都是相同的。雖然線程衝突本質上是一個隨機過程,但它仍然應該同樣影響我的服務器。我在一臺服務器上看到50多個錯誤實例,另一臺服務器上發生了0個錯誤。從統計上來看,線程衝突只發生在我的一臺服務器上,而另一臺服務器則無錯誤運行。
我已經在修改應用程序以使其線程更安全,但是在Dictionary對象的Insert操作中拋出此錯誤的其他原因可能存在嗎?
您確定負載平衡器向服務器B發送請求嗎?可能它隻影響第一臺服務器。 –
也許一臺服務器有一個32位的操作系統,另一臺是64位的? –
@ petro.sidlovskyy我已經確認兩臺服務器都有基於日誌文件的流量 – Joshua