Стратегия для занятого сервиса WCF - PullRequest
0 голосов
/ 03 ноября 2011

У меня действительно занятый самодостаточный сервер WCF, которому требуется более 2000 клиентов для частого обновления своего статуса.Я обнаружил, что загрузка ЦП сервера постоянно находится на уровне около 70%, и у клиентов есть 50% шанс на фактическое подключение к серверу.Они истекают через 60 секунд.Это проблематично, потому что, если сервер не получает ответ от клиента, он будет предполагать, что клиент находится в автономном режиме.

Я реализовал регулирование, чтобы я мог настроить одновременные подключения / сеансы / и т. Д., Но еслиЯ не ошибаюсь, увеличение этого приведет только к более высокой загрузке процессора и ухудшению проблем с подключением.Правильно?

Поможет ли увеличение времени ожидания до 60 с?Я не совсем уверен, как это работает, но будет ли клиент сидеть в очереди типа, пока сервер не сможет выставить запрос?Или лучше установить тайм-аут на что-то меньшее и заставить клиента регистрироваться чаще, если он не может подключиться (кажется, что это может только усугубить проблему в некотором смысле)?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Если для сервера действительно важно знать, подключен ли клиент, я не думаю, что для этого лучше всего полагаться только на WCF.

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

Если вы очень обеспокоены сообщениями, которые всегда проходят, несмотря ни на что, тогда я предлагаю изучить Надежные сервисы. Проверьте атрибут поведения enableReliableSession. Я предлагаю прочитать хотя бы первую главу в Программировании WCF-сервисов Джувала Лоуи , которая доступна бесплатно как образец книги Kindle.

0 голосов
/ 03 ноября 2011

Увеличение таймаута может помочь, но, вероятно, не сильно, и Удивительный вечно увеличивающийся тайм-аут является своего рода мотивом для http://www.thedailywtf.com. Заставить клиента забить сервер, если он не может пройти первый раз, гарантированно причинит боль.

Если все, что вас волнует, это знать, существует ли клиент, возможно, было бы целесообразно перейти на один или два уровня и попросить клиента отправлять вам HTTP POST время от времени? WCF требует некоторых активных действий, но POST может просто лежать там, пока ваш сервер не успеет с этим разобраться, а клиент может просто отправить его и забыть об этом.

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