В моей компании есть приложение, которое отслеживает информацию, связанную с веб-сайтами, размещенными на разных компьютерах.На центральном сервере запускается служба Windows, которая получает список сайтов для проверки, а затем запрашивает службу, работающую на этих целевых сайтах, чтобы получить ответ, который можно использовать для обновления локальных данных.
Моя задача была выполненаприменить многопоточность к этому процессу, чтобы сократить время, необходимое для запуска всех сайтов (почти 3000 сайтов, для последовательной работы которых требуется около 8 часов).Служба успешно выполняется, когда она не многопоточна, но в тот момент, когда я распределяю работу по нескольким потокам (тестирование с 3 прямо сейчас, плюс поток наблюдателя), возникает странный сбой, который, как представляется, возникает из-за вызова удаленных служб, которыедолжен предоставить данные.Это вызов SOAP / XML.
При запуске на тестовом сервере служба просто сдается и не выполняет свою задачу, но не прекращает работу.При запуске через отладчик (Dev Studio 2010) все это просто останавливается.Я запустлю его, и через несколько секунд он прекратит отладку, но не потому, что он завершен.Он не выбрасывает исключение и не дает мне никаких сообщений.С точками останова я могу пройти до точки, где она просто останавливается.Регистрация событий приводит меня к тому же месту.Он останавливается на строке кода, которая пытается получить ответ от веб-службы на других сайтах.И снова: он делает это только при многопоточности.
Я нашел некоторую информацию, которая предполагает, что есть ограничение на число соединений, которое по умолчанию равно 2. Предлагаемое решение состоит в добавлении некоторых тегов в app.config, ноэто не решило проблему ...
<system.net>
<connectionManagement>
<add address="*" maxconnection="20"/>
</connectionManagement>
</system.net>
Я все еще думаю, что это может быть связано с количеством разрешенных подключений, но я не смог найти информацию об этом в Интернете очень хорошо.Я скучаю по чему-то прямому?Любая помощь будет высоко ценится.