Получение времени ожидания службы WCF через некоторое время (20 минут) - PullRequest
3 голосов
/ 14 сентября 2010

У меня есть служба Windows, которая сильно многопоточная. Каждый поток вызывает различные методы службы WCF. Примерно через некоторое время все вызовы, которые я делаю к службе WCF, приводят к таймауту:

Тайм-аут канала запроса пытаясь отправить после 00:10:00. Увеличьте значение тайм-аута, передаваемого вызов для запроса или увеличения Значение SendTimeout в привязке. Время, отведенное на эту операцию, может был частью дольше Тайм-аут

Как вы видите, время ожидания составляет 10 минут, также я попробовал это:

serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200"/>

Но это не помогло.

Я проверил w3wp.exe с помощью Process Explorer, но я не смог найти ничего, что могло бы меня указать. Все соединения с веб-сервисом закрыты.

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

Как я могу это проверить? Я думал, что сервер просто перегружен, но только процессор превышает 50%, а память - нет.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

Посмотрите на idleTimeout:

<system.web>
<hostingEnvironment idleTimeout="20"
                    shutdownTimeout="30"/>
 </system.web>

Обычно это значение равно 20 минутам, и вам нужно его изменить.

UPDATE Больше информации здесь:

http://msdn.microsoft.com/en-us/library/bb332338.aspx

0 голосов
/ 14 сентября 2010

Ответ: счетчики производительности.Это такое сложное решение, что вы можете просто отслеживать его в некоторой трассировке.Вам нужен тяжелый инструмент для мониторинга здоровья = встроенные и настраиваемые счетчики производительности.Вы можете реализовать пользовательский счетчик для своей службы Windows и отслеживать, сколько вызовов в секунду создается и сколько завершено.Вы также можете использовать встроенные счетчики для службы WCF, чтобы отслеживать, сколько экземпляров выполняется и сколько вызовов обрабатывается в секунду.Если эти значения сильно отличаются, у вас есть проблема - вы загружаете свой сервис запросом, который не может быть обработан вовремя.

Вы также можете начать с простого теста, чтобы отслеживать, сколько времени занимает обработка в сервисе WCF.Если у вас есть обработка, которая занимает 1 с, вы просто не можете звонить в службу более 200 раз в секунду.

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