2010-11-10 2 views
0

У меня проблема с производительностью служб WCF, размещенных в IIS, с использованием привязок net.tcp.Хостинг службы WCF в IIS на одном сайте с использованием привязки tcp и нескольких портов

Мы недавно перенесли нашу систему из COM + в WCF, и тесты показывают ухудшение производительности. Я смотрю на счетчики производительности на сервере, а загрузка процессора очень низка (< 10%), есть много доступной памяти, чтение дисков нормально и т. Д. Я также проверил счетчики производительности WCF и количество выдающихся (не более 1 в любой момент времени), количество вызовов в секунду довольно низкое (16 вызовов в секунду для службы, которая больше всего используется системой). Все наши сервисы настроены для каждого звонка и однопоточных ...

Я уже играл с дросселированием и задал все значения для всех настроек до 100 (сервер - это 8-ядерная машина, и я понимаю, что это что фактические значения дросселирования становятся тем, что вы устанавливаете, умноженное на количество CPU). Я не думаю, что там есть проблема.

Я также уверен, что клиент использует это соединение эффективно (не создавая новые там, где есть существующее соединение TCP, который может быть использован)

В настоящее время веб-приложение принимает около 50 услуг (да, это 50!), и на данный момент я пытаюсь устранить это как источник проблемы. Я занимаюсь размещением сервисов в нескольких веб-приложениях, и я также хотел бы, чтобы они использовали разные порты, но у меня есть некоторые проблемы с этим, и я не могу найти пошаговые инструкции в Интернете в любом месте, поэтому я надеюсь кто-то здесь сможет мне помочь :)

Вот что я пытался сделать до сих пор:
1) Я добавил еще одну привязку к веб-сайту по умолчанию в IIS (у меня есть две сети. tcp bindings, один настроен на использование информации «привязки» 808: , а другой использует «809: *») 2) Я убедился, что этим портам разрешено проходить через брандмауэр
3) ve попытался настроить каждое отдельное веб-приложение для фильтрации портов (это как nippet из web.config, где я хочу использовать порт 808):

<serviceHostingEnvironment>
<baseAddressPrefixFilters>
< добавить префикс = "net.tcp // < имя_сервера>: 808"/>
</baseAddressPrefixFilters >
</serviceHostingEnvironment >

Когда я пытаюсь подключиться к этой услуге я получаю сервис по адресу конечной точки «net.tcp: // < имя_сервера > /SomeService.svc» недоступен для протокола адреса

Если я удалю < serviceHostingEnvironmentgt; немного. Что я здесь делаю неправильно?

Другие услуги, например, те, которые я хочу быть доступными на порту 809, вообще недоступны, сообщение об ошибке, которое я рассказываю мне, что конечная точка не существует, похоже, что IIS не прослушивает этот порт вообще. Брандмауэр, как уже упоминалось, определенно разрешает этот порт.

Любые идеи или, возможно, предложения о том, какие наилучшие настройки при размещении этого большого количества сервисов были бы высоко оценены!

Спасибо!

ответ

1

Это старое сообщение, но ... Об ошибке конечной точки - попробуйте установить сетевую привязку информации о приложении, а не на уровне сайта.