Тайм-аут клиента WCF после 400 вызовов экземпляра, когда не закрывается прокси - PullRequest
2 голосов
/ 01 апреля 2011

Я использую следующий код, чтобы выяснить, что происходит, когда не удается закрыть прокси-сервер:

class Program
{
    static void Main()
    {
        for (int i = 1; i < 500; i++)
        {
            MakeTheCall(i);
        }

        Console.WriteLine("DONE");
        Console.ReadKey();
    }

    private static void MakeTheCall(int i)
    {
        Console.Write("Call {0} - ", i);

        var proxy = new ServiceReference1.TestServiceClient();

        var result = proxy.LookUpCustomer("123456", new DateTime(1986, 1, 1));

        Console.WriteLine(result.Email);            

        //proxy.Close();
    }
} 

Служба использует привязку net.Tcp, WAS, все значения по умолчанию.

Запустив его, я получаю тайм-аут, когда я> 400. Почему 400 - это где-то настройка? Я ожидал, что это будет намного меньше - равно maxConnections.

Ответы [ 2 ]

5 голосов
/ 06 июля 2011

Не закрывая прокси, вы поддерживаете сеанс в службе. Атрибут регулирования maxConcurrentSessions определяет, сколько сеансов может обслуживать служба. По умолчанию (в .NET 4.0) установлено значение 100 * Количество процессоров, поэтому я предполагаю, что у вас 4 процессора (или ядра) = 400 одновременных сеансов?

0 голосов
/ 01 апреля 2011

Причина, по которой ваш тестовый код имеет тайм-аут, возможно, из-за регулирования службы WCF по умолчанию и не имеет ничего общего с отсутствием удаления объекта прокси. Чтобы сохранить ресурс на стороне клиента, вы всегда должны правильно располагать экземпляр прокси.

Я считаю, что узел службы по умолчанию будет создавать только до 16 экземпляров службы, что может быть еще меньше, если для привязки установлено использование какого-либо сеанса. Вы залили около 400 запросов в течение нескольких секунд. Существует набор счетчиков производительности WCF , которые можно запустить и просмотреть экземпляр службы WCF. Я знал, что вся подготовка к сертификационному экзамену WCF когда-нибудь будет очень полезна:)

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