|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
Сабж. IIS 7.5.7600 на Win Server 2008R2 SP1 Enterprice edition. Сервис для внутреннего использования, и доступен только во внутренней сети. Всё работает нормально, но есть пара нюансов: 1. Долгое время отклика сервиса, если к нему какое-то время никто не обращался. Настроили always on, как описано здесь и здесь (параметр startMode для пула, и параметр serviceAutoStartEnabled для приложения, Application Initialization устанавливать не стали) - тем не менее, особенного эффекта это не возымело. Особенно интересна следующая деталь: некое действие клиентского приложения сводится к последовательному (через async-await) вызову 2 сервисных методов, и если к сервису никто не обращался некоторое время, то с ощутимой задержкой выполняются оба метода. Ну, почему долго выполняется первый - это понятно, а вот почему такая же картина со вторым - непонятно: сервис ведь уже поднялся, разогрелся, загрузил сборки, итд. 2. Ввиду изложенного в п. 1 - есть ли смысл поменять хостинг в IIS на self-hosting в виндовс-сервисе? 3. Как вариант - может быть, имеет смысл написать windows-сервис, который с определенной частотой будет дергать методы WCF-сервиса, чтобы не дать ему уснуть? 4. Как можно организовать более-менее достоверное нагрузочное тестирование сервиса? Возможное количество пользователей ~5000, активность обращения к сервису неравномерна - в течение месяца обращения будут достаточно редки, но в отдельные 2-3 дня к сервису могут обратиться все предполагаемые пользователи сразу. Если я в тестовом приложении, например, запущу параллельно с интервалом в 1 секунду 5000 тасков с разными параметрами, которые будут дёргать сервисные методы, и логировать факт успешного/неуспешного вызова - это даст какую-либо внятную картину? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2019, 07:12 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, 4)Создаешь еще один Wcf- сервис (TestCaller), в котором клиенты этого сервиса будут слушать его и ждать от него команды (дуплексная связь) Создаешь консольное приложение, которое подключается к TestCaller и ждет от него команды (callback-реализация). Добавляешь ссылку на свой тестируемый WCF-сервис, подключаешься к нему. Создаешь 5000 консольных приложений. Посредством вызова метода TestCaller, все твои клиенты начнут вызывать твой тестирумый WCF-сервис. Самый лучший вариант-Azure DevOps Services. Только не знаю точно, можно ли там WCF тестить. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 11:49 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
>Сон Веры Павловны, 21 авг 19, 07:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1316168&msg=21953925][21953925] >2. Ввиду изложенного в п. 1... <Данный вариант протестировать обязательно. Причем и для: -WellKnownObjectMode.Singleton. На сервере регистрируем объект https://docs.microsoft.com/ru-ru/dotnet/api/system.runtime.remoting.remotingconfiguration.registerwellknownservicetype?view=netframework-4.7.2 ]Type. Далее вызываем сервис с подсчетом времени выполнения. Задержка. Повторный вызов сервиса. Анализ результатов. и для: -WellKnownObjectMode.SingleCall. Можно увидеть как долго сервис поднимается, разогревается, загружает сборки и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2019, 15:16 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
>Сон Веры Павловны, 21 авг 19, 07:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1316168&msg=21953925][21953925] >...поменял ли в тестовом варианте хостинг в IIS на self-hosting в виндовс-сервисе? < Если да, то каков результат? Вопрос для меня не праздный. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2019, 20:42 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
ВМоисеев>Сон Веры Павловны, 21 авг 19, 07:12 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1316168&msg=21953925][21953925] >...поменял ли в тестовом варианте хостинг в IIS на self-hosting в виндовс-сервисе? < Если да, то каков результат? Вопрос для меня не праздный. Поменял, отклик сервиса стал однозначно быстрее при вызове любого метода сервиса, и вне зависимости от времени бездействия сервиса. До нагрузочных тестов пока дело не дошло - некогда. В следующий понедельник это хозяйство запускается в полуопытно-полурабочую эксплуатацию, там и выяснится, нормально ли self-hosted будет держать предполагаемую нагрузку. Ну, и плюс еще один профит - self-hosted получилось настроить так, что с одной стороны, он поддерживает windows-аутентификацию, и нормально имперсонирует вызывающих пользователей, с другой стороны, ряд операций может производить в контексте windows-аккаунта, под которым запущен сервис - т.е., например, обращаться к БД c windows-аутентификацией под своей собственной сервисной учёткой. Под IIS мне такого добиться не удалось, как не бился, никакие манипуляции с endpoint identity не помогли. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 07:05 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, попробуй в консольном приложении запустить, может еще быстрее взлетит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 10:39 |
|
WCF-сервис с TCP/IP биндингом, windows-авторизацией, и хостингом в IIS
|
|||
---|---|---|---|
#18+
Если есть система оркестровки и/или мониторинга, то прописываем там простенький health check и нет проблем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2019, 12:43 |
|
|
start [/forum/topic.php?fid=19&tid=1396662]: |
0ms |
get settings: |
23ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
209ms |
get tp. blocked users: |
2ms |
others: | 388ms |
total: | 745ms |
0 / 0 |