Проблемы с доступом к веб-роли Azure во внешнем веб-сервисе - PullRequest
3 голосов
/ 28 февраля 2012

У меня есть веб-роль Azure, которая обращается к внешней веб-службе SOAP на основе WCF (порт 80) для различных битов данных.Ответ от этого сервиса очень неустойчивый.Обычно я получаю следующую ошибку:

Не было прослушивания конечной точки на http://www.myexternalservice.com/service.svc, которая могла бы принять сообщение.Это часто вызывается неправильным адресом или действием SOAP.

Чтобы изолировать проблему, я создал простое консольное приложение, которое периодически вызывает эту службу с интервалом в 1 секунду и регистрирует все ответы.

    using (var svc = new MyExternalService())
    {
        stopwatch.Start();
        var response = svc.CallService();
        stopwatch.Stop();
        Log(response, stopwatch.ElapsedMilliseconds);    
    } 

Если я отправляю RDP в один из моих веб-экземпляров Azure и запускаю это приложение, потребуется 10-20 попыток, прежде чем оно получит действительный ответ от внешней службы.Эти первые попытки всегда сопровождаются вышеуказанной ошибкой.После этого «периода разогрева» все работает нормально.Если я остановлю приложение, а затем сразу же перезапущу, оно должно пройти тот же период «прогрева».

Однако , если я запускаю это же приложение с любой другой машины, которую получаюдействительные ответы немедленно.Я запустил это приложение для ведения журнала на серверах, работающих в нескольких центрах обработки данных (не Azure), на рабочих столах в разных сетях и т. Д. Эти тестовые прогоны всегда очень стабильны.

Я не уверен, почему эта служба будет реагироватьтаким образом в среде Azure.К сожалению, в течение короткого времени я вынужден вызывать эту услугу, но мои пользователи не могут терпеть это несоответствие.

Захват сетевого трафика на сервере Azure указывает на большое количество SynReTransmit .с интервалами в 10 секунд в это же время я испытываю ошибки соединения.После завершения «разогрева» SynReTransmit больше не происходит.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2012

Мы нашли решение для этой проблемы, хотя я не совсем доволен им.После исчерпания всех других направлений действий мы изменили балансировщик нагрузки на Балансировка нагрузки уровня 7 с Балансировка нагрузки уровня 4 .Хотя это решило проблему потерянных запросов, я не уверен, почему это имело значение.

0 голосов
/ 07 марта 2012

Область центра данных Windows Azure, в которой развернуто приложение Windows Azure, может не находиться рядом с внешней веб-службой.Локальный компьютер, который вы пытаетесь (который работает нормально), может быть близок к веб-сервису.Вот почему в Azure может быть огромная задержка, которая может привести к его сбою.

Успешный доступ к WSDL из браузера в виртуальной машине Azure может быть связан с кэшированием браузера.Выполнение вызова функции из браузера сообщит вам, действительно ли оно устанавливает соединение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...