WCF Холодный запуск - PullRequest
       8

WCF Холодный запуск

3 голосов
/ 17 декабря 2008

Я использую WCF в довольно требовательной среде. Одно поведение, которое я наблюдал, - это то, что я назвал холодным стартапом. Когда я в первый раз запускаю клиент, который вызывает службу, кажется, что в первых вызовах возникает много сбоев. Например, я могу наблюдать за первым, скажем, десять звонков, а затем следующие 200 звонков завершатся неудачно. Я разговариваю со службой асинхронно. Служба запускается и отвечает нормально. Я вижу, что это проблема конечной точки (потенциально), а не проблема операции, так как все несколько различных операций потерпят неудачу. Такое ощущение, что есть блокировка, и конечная точка останавливается и перезагружается, а затем все в порядке, хотя у меня нет доказательств, подтверждающих это.

Нет ошибок в трассировке на стороне сервера. Мои журналы на стороне клиента показывают много следующих исключений:

System.ServiceModel.CommunicationException: сервер не предоставил значимого ответа; это может быть вызвано несоответствием контракта, преждевременным завершением сеанса или внутренней ошибкой сервера.

Я рассмотрел реализацию алгоритма сглаживания, чтобы выровнять сервисные вызовы, так как при запуске их, как правило, много. Кто-нибудь еще видел подобное поведение? Спасибо.

Steve

РЕДАКТИРОВАТЬ: служба размещена в службе Windows.

РЕДАКТИРОВАТЬ: Спасибо за комментарии, ребята.

Я с самого начала установил, что номера в разных очередях довольно высокие. У меня есть некоторые с трудом завоеванные знания о том, как масштабировать службы WCF. Я разрешаю 2048 одновременных подключений. Я установил listenBackLog и т.д ...

Я реализовал сглаживание для первых 1000 вызовов, и это, похоже, получилось. Это может быть связано с JIT, но у меня нет никаких доказательств этого. Пока я собираюсь покинуть его и посмотреть, не произойдет ли оно снова.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2008

Из интереса, как вы размещаете сервер WCF? IIS имеет удобный пул (через NLB, такой как F5), но имеет проблему с перезапуском пула приложений и задержку, вызванную IIS, порождающим (по первому требованию) app-pool / domain / etc в первую очередь. Самостоятельное размещение (служба Windows и т. Д.) Имеет тенденцию быть более линейным и предсказуемым для производительности, особенно если (во время запуска службы) вы принудительно загружаете все, возможно, отправляя запрос себе (если вы понимаете, о чем я).

Если вам не нужно кластеризовать службу, рассмотрите возможность самостоятельного ее размещения. Посмотрите, поможет ли это.

1 голос
/ 21 декабря 2008

Вы пытались увеличить количество подключений в очереди для конечной точки? Возможно, что 10 поставлены в очередь, и пока .NET CLR выполняет JIT для вашего кода, остальные входящие соединения будут отклонены, пока ваш код не начнет работать.

0 голосов
/ 03 сентября 2009

Это старая тема, но я нахожусь в похожей ситуации. ОП заявлено

Я реализовал сглаживание для первых 1000 вызовов, и это, похоже, получило его.

Что именно он подразумевает под "сглаживанием"? Я выполнил поиск в Google, и это не похоже на ключевое слово ...

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