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