Рейтинг:0

IIS, по-видимому, разрешает максимум один одновременный вызов веб-службы WCF для каждого клиента.

флаг cn

У нас есть приложение Windows, которое вызывает методы веб-сервиса для доступа к базе данных. Мы обнаружили случай, когда мы делаем длинный (15+ секунд) асинхронный вызов веб-службы службе WCF в IIS. Если пользовательский интерфейс делает другие, блокирующие (это старый код), вызовы веб-службы, пока это происходит, эти дополнительные вызовы блокируются до тех пор, пока не завершится первоначальный асинхронный вызов.

Этого не происходит, когда пользовательский интерфейс и веб-службы работают в Visual Studio с IIS Express: блокирующие вызовы выполняются быстро, и все эти действия завершаются задолго до завершения длинного асинхронного вызова.

Все веб-сервисы имеют следующее:

<serviceThrottling 
    maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />

Кроме того, maxConnections="500" везде.

Мы хотели бы, чтобы IIS обрабатывал эти одновременные вызовы веб-сервисов так же, как это делает IIS Express, одновременно.

...

Если это поможет, все это имеет смысл: мы ищем объекты. Поиск возвращает 50 лучших (по умолчанию) элементов, соответствующих критериям, и в то же время мы выполняем асинхронный вызов count(*) для того же запроса. Запрос подсчета может занять очень много времени. Пользователи настаивают на том, что иногда им нужно знать общее количество, но обычно они хотят иметь возможность открывать объекты в списке результатов задолго до того, как счетчик возвращается. При открытии объектов вступают в действие синхронные вызовы веб-службы. Раньше результаты поиска и подсчет были частью одного и того же метода веб-службы.

Lex Li avatar
флаг vn
Включите трассировку WCF в обоих случаях (IIS Express/IIS), https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/configuring-tracing, и тогда вы сможете четко видеть, что неправильный.
Ed J. Plunkett avatar
флаг cn
@LexLi Спасибо, Лекс. Я сделаю это.
Ed J. Plunkett avatar
флаг cn
@LexLi Есть ли там какая-то конкретная информация, которая, по вашему мнению, может помочь в определении причины этой проблемы?
Lex Li avatar
флаг vn
Обратитесь к разработчику этого веб-приложения, и он / она знает, как анализировать. В https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/using-tracing-to-troubleshoot-your-application есть несколько примеров.
Ed J. Plunkett avatar
флаг cn
@LexLi "Спроси кого-нибудь, кто знает"? На самом деле это была идея размещения вопроса здесь.
Lex Li avatar
флаг vn
Вы можете просмотреть существующие вопросы, чтобы увидеть, на какие из них, скорее всего, будет дан ответ. Для анализа проблем WCF требуется доступ к журналу трассировки и различным другим журналам (любой из них может содержать конфиденциальную информацию), а возможных шаблонов ошибок слишком много, чтобы их можно было суммировать в достаточно коротком ответе. Эта природа делает такие вопросы сложными (если не невозможными) для обсуждения в Интернете.
Ed J. Plunkett avatar
флаг cn
@lexli Ну, это вопрос, который у меня есть.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.