WCF-параллелизм и sendTimeout - PullRequest
1 голос
/ 06 марта 2012

У меня странная проблема с параллелизмом WCF и sendTimeout.

Это мои тестовые программы:

Служба WCF: использует привязку net.Tcp, устанавливает InstanceContextMode = InstanceContextMode.PerSession, ConcurrencyMode =ConcurrencyMode.Multiple

Это означает, что сервис будет использовать несколько тад для обработки запросов клиента.

И результат теста улучшил его, я запускаю 20 потоков для вызова метода сервиса через один и тот же канал связи.

Метод обслуживания очень прост:

public void GetData(int threadID)

Клиент вызовет этот метод со своим threadID, служба выведет оба идентификатора потока клиента и службы.

Это выходные данные службы:

В: 06.03.2012 14:51:12 Начало потока процесса: 7420, идентификатор потока сервера: 3948

В: 3/6 /2012 2:51:42 PM Запуск потока процесса: 3600, идентификатор потока сервера: 3948

В: 06.03.2012 14:52:12 Запуск потока процесса: 6804, идентификатор потока сервера: 3948

В: 06.03.2012 14:52:14 Началопоток обработки: 5840, идентификатор потока сервера: 540

В: 06.03.2012 14:52:15 Начало обработки потока: 5688, идентификатор потока сервера: 4000

В:06.03.2012 14:52:16 Начало потока процесса: 6220, идентификатор потока сервера: 5556

В: 06.03.2012 14:52:17 Начало потока процесса: 6332, серверID потока: 3380

В: 06.03.2012 14:52:18 Начало потока процесса: 7788, идентификатор потока сервера: 548

В: 06.03.2012 2:52:19 PM Запуск потока процесса: 7060, идентификатор потока сервера: 6060

В: 06.03.2012 14:52:20 Запуск потока процесса: 4724, идентификатор потока сервера: 3836

В: 06.03.2012 14:52:21 Начало процесса: 6728, идентификатор потока сервера: 420

В: 06.03.2012 14:52:22 Начало процессапоток: 7984, идентификатор потока сервера: 6036

В: 06.03.2012 14:52:23 Начало обработки потока: 580, идентификатор потока сервера: 3012

В: 3 /6/2012 14:52:24 Начало потока процесса: 2412, идентификатор потока сервера: 5472

В: 06.03.2012 14:52:25 Начало потока процесса: 2664, идентификатор потока сервера: 172

В: 06.03.2012 14:52:26 Начало потока процесса: 6820, идентификатор потока сервера: 5500

В: 06.03.2012 14:52:27 Запускпоток обработки: 3340, идентификатор потока сервера: 1056

В: 06.03.2012 14:52:28 Начало обработки потока: 6584, идентификатор потока сервера: 3052

В:06.03.2012 14:52:29 Начало потока процесса: 6156, идентификатор потока сервера: 5784

В: 06.03.2012 14:52:30 Начало потока процесса: 6756, серверid потока: 724

Но ... странная вещь происходит, когда я устанавливаю sendTimeout на стороне клиента со значения по умолчанию от 00:01:00 до 00:10:00, результат выглядит так:

At: 06.03.2012 14:57:31 Начало потока процесса: 3660, идентификатор потока сервера: 5376

В: 06.03.2012 14:58:01 Начало потока процесса: 6576,ID потока сервера: 5376

В: 06.03.2012 14:58:31 Начало потока процесса: 7720, идентификатор потока сервера: 5376

В: 06.03.2012 2: 59: 13: 00 Запуск потока процесса: 8148, идентификатор потока сервера: 5376

В: 06.03.2012 14:59:31 Начало потока процесса: 7356, идентификатор потока сервера:5376

В: 06.03.2012 15:00:01 Начало потока процесса: 8060, идентификатор потока сервера: 5376

В: 06.03.2012 3:00:31PM Начало процесса: 6512, идентификатор сервера: 5376

В: 06.03.2012 15:01:01 Начало процесса: 8004, идентификатор сервера: 5376

В: 06.03.2012 15:01:31 Начало потока процесса: 7444, идентификатор потока сервера: 5376

В: 06.03.2012 15:02:01 Начало потока процесса: 5564, идентификатор потока сервера: 5376

В: 06.03.2012 15:02:31 Начало обработки потока: 7788, идентификатор потока сервера: 5376

В: 06.03.201215:03:01 Начало процесса: 6584, идентификатор потока сервера: 5376

В: 06.03.2012 15:03:31 Начало процесса: 5488, идентификатор потока сервера: 5376

В: 06.03.2012 15:04:01 Начало обработки потока: 356, идентификатор потока сервера: 5376

В: 06.03.2012 15:04:32 Началодля обработки потока: 7912, идентификатор потока сервера: 5376

В: 06.03.2012 15:05:02 Начало потока процесса: 700, идентификатор потока сервера: 5376

В: 06.03.2012 15:05:32 Начало процессапоток: 7484, идентификатор потока сервера: 5376

В: 06.03.2012 15:06:02 Начало обработки потока: 3960, идентификатор потока сервера: 5376

Кажется, что servcieтеперь используйте только один поток для обработки клиентских запросов.Есть ли связь между sendTimeout и параллелизмом?Или это связано с механизмом внутренней обработки WCF?

...