Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
Добрый вечер. Может кто-нибудь знает в деталях майкросовтовскую реализацию web-сервисов, точнее логику планировщика обработки входящих запросов? Есть некий веб метод, который ресурсов процессора не потребляет, но работает очень медленно - он производит запрос на внешний ресурс и дожидается ответа. Количество клиентов исчисляется тысячами, и если внешний ресурс начал затыкаться, то изредка происходит неприятная ситуация: количество параллельных подвисших на этом методе запросов переваливает некую критическую отметку и сервис перестаёт откликаться. При этом загрузка процессора по прежнему равна нулю. Я попробовал смоделировать медленный метод таким образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. и запустил на клиенте сотню потоков, вызывающих этот метод. На тестовом сервере замечено поведение: обработка двух запросов начинается сразу, но 98 остальных выстраиваются в очередь, и очередные два начинают обрабатываться, как только обработались предыдущие два. Так и обрабатываются парами. На виртуальной машине (тот же 2003-й сервер и ASP.NET 2.0) поведение малость другое: изначально подхватилась обработка всё тех же первых двух потоков, но слудущий, третий, начал обрабатываться спустя всего секунду. Затем через секунду начал обрабатываться ещё один и т.д. То есть число конвейеров постоянно увеличивалось и остановилось на отметке 24, следущий поток был допущен только после освобождения одного из первых. Может подскажете где настраиваются эти значения (в одном случае максимум 2, в другом максимум 24)? На вкладках AppPool'ов ничего полезного не нашёл. И таймаут в 1 секунду до выделения следущего конвейера (не называю его потоком, чтобы с соответствующим kernel-object'ом путаницы не возникло) можно ли убрать или поставить поменьше? Вообще если в логику выделения этих ресурсов можно как-нибудь залезть и написать несложные правила каким запросам сразу выделять новый конвейер, а какие пусть ждут, то подскажите куда копать, плиз. Извиняюсь за объем. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 22:27 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
Кажись раскопал частично. В machine.config такая запись Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 23:12 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
Какие-то странности. На домашней конфигурации настройка machine.config processModel помогла, на рабочей тестовой среде с этими значениями снова только два параллельно отрабатывают, третий и остальные ждут пока кто-то из предыдущих освободится. В чём может быть ещё проблема, может как-нибудь можно диангостику провести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 13:53 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
Что-то тема уже больше на персональный блог будет похожа. В общем нашёл где затык: это КЛИЕНТ у меня почему-то не может пропихнуть больше двух одновременных вызовов на удалённый сервис (на localhost - нормально засылает). Если запускаю десять экземпляров одного клиента, то каждый из десяти пуляет по два запроса и ждёт их ответа, на сервер соответственно приходит двадцать одновременных. Возможно, какая-то дот-нетовская особенность работы WebReference. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:52 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
Коляныч, ааааа так ты про это речь вел : ) только после 4 постов стало понятно о чем твой блог. так модель поведения wcf службы определяется не <processModel autoConfig="false" minWorkerThreads="30" maxWorkerThreads="100"/> а совсем другими параметрами :) блин я до сих пор не уверен, что понял из твоего блога, о чем ты вещаешь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:45 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
у него asmx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:50 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
и что? какое развитие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 18:41 |
|
||
|
конвейеры обработки вызовов методов сервиса
|
|||
|---|---|---|---|
|
#18+
AlexeiKКоляныч, ааааа так ты про это речь вел : ) только после 4 постов стало понятно о чем твой блог. Спасибо за участие :) Если бы сразу отделил мух от котлет, и внимательно посмотрел на IIS-овские логи, то сразу понял бы, что затык не на сервере. Но клиент простой как карандаш, на него вообще подозрения не упали, почём зря. Winnipuhи что? какое развитие? Развитие будет завтра. Кажетстя, уже известно в чём проблема - нужно INTERNET_OPTION_MAX_CONNS_PER_SERVER в клиентском приложении побольше поставить. Сервис, как выяснилось, вообще не является тонким местом, поэтому с разделом форума, похоже, что промахнулся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 19:38 |
|
||
|
|

start [/forum/topic.php?fid=19&fpage=27&tid=1397676]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 154ms |

| 0 / 0 |
