Я понимаю, что одной из главных причин индекса за пределами ошибки границ объекта Dictionary является столкновение потоков. (Чтение и запись в один и тот же словарь одновременно). Однако я столкнулся с недоумением, когда столкновение потоков не является достаточным объяснением.
Здесь ситуация: Я написал код, который реализует словарь небезопасным способом для многопоточной обработки.
Код реализован как веб-служба на двух серверах, сервере A и сервере B. Доступ к разлочкам осуществляется через балансировщик нагрузки, который будет отправлять запросы серверам A и B циклическим способом.
Теперь вот сложная часть. Ошибка ТОЛЬКО появляется на сервере A и никогда на сервере B. Согласно нашей аппаратной команде, оба сервера идентичны. Хотя столкновение потоков по сути является случайным процессом, оно должно по-прежнему влиять на оба моих сервера одинаково. Я вижу 50+ экземпляров ошибки на одном сервере и 0 на другой. Статистически маловероятно, что конфликты потоков происходят только на одном из моих серверов, в то время как другой работает без ошибок.
Я уже изменяю приложение, чтобы сделать его потоком более безопасным, но какие другие причины могут существовать для этой ошибки, возникающей во время операции Вставки объекта Dictionary?