Tôi hiểu một trong những nguyên nhân chính gây ra Chỉ số bên ngoài lỗi giới hạn cho đối tượng Từ điển là xung đột chuỗi. (Đọc và viết vào cùng một từ điển cùng một lúc) Tuy nhiên, tôi đã bắt gặp một trường hợp rắc rối khi va chạm thread không phải là một lời giải thích đầy đủ.Các nguyên nhân thay thế cho chỉ mục nằm ngoài giới hạn của mảng trong từ điển .Net
Đây là tình huống: Tôi đã viết mã thực hiện Từ điển theo cách không an toàn để xử lý đa luồng.
Mã đã được triển khai dưới dạng dịch vụ web trên hai máy chủ, máy chủ A và máy chủ B. Các máy chủ được truy cập thông qua bộ cân bằng tải sẽ gửi yêu cầu đến máy chủ A và B theo kiểu vòng tròn.
Bây giờ, đây là phần khó khăn. Lỗi này chỉ hiển thị trên máy chủ A và không bao giờ ở trên máy chủ B. Theo nhóm phần cứng của chúng tôi, cả hai máy chủ đều giống nhau. Mặc dù thread collision vốn dĩ là một quá trình ngẫu nhiên, nó vẫn sẽ ảnh hưởng đến cả hai máy chủ của tôi như nhau. Tôi thấy hơn 50 trường hợp lỗi trên một máy chủ và 0 trường hợp trên một máy chủ khác. Đó là thống kê không chắc rằng các va chạm thread chỉ xảy ra trên một trong các máy chủ của tôi trong khi một trong những khác đang chạy lỗi miễn phí.
Tôi đã sửa đổi ứng dụng để làm cho chuỗi này an toàn hơn, nhưng những lý do nào khác có thể tồn tại cho lỗi này sẽ được ném trong khi trong hoạt động Chèn của đối tượng Từ điển?
Bạn có chắc là trình cân bằng tải gửi yêu cầu đến Máy chủ B không? Có thể nó chỉ ảnh hưởng đến máy chủ đầu tiên. –
Có lẽ một máy chủ có hệ điều hành 32 bit và một máy chủ khác có 64 bit? –
@ petro.sidlovskyy Tôi đã xác nhận rằng cả hai máy chủ đều có lưu lượng truy cập dựa trên tệp nhật ký – Joshua