Я сам размещал службу WCF на BasicHttpBinding
, потребляемом ASMX Client
.Я имитирую параллельную пользовательскую нагрузку 1200 пользователей .Сервисный метод принимает строковый параметр и возвращает строку.Обмен данными составляет менее 10 КБ.Время обработки запроса фиксируется на уровне 2 секунд с помощью оператора Thread.Sleep (2000).Ничего дополнительного.Я удалил все хиты / бизнес-логику БД.
Один и тот же фрагмент кода работает нормально для 1000 одновременно работающих пользователей.Я получаю следующую ошибку, когда увеличиваю число до 1200 пользователей.
System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at WCF.Throttling.Client.Service.Function2(String param)
Это исключение часто сообщается при несовпадении DataContract и большом обмене данными.Но никогда, когда делаю нагрузочный тест.Я просмотрел достаточно и перепробовал большинство опций, которые включают
- Включенный журнал трассировки и сообщений на стороне сервера.Но ошибок нет.
- Для преодоления исчерпания порта MaxUserPort установлен на 65535, а TcpTimedWaitDelay 30 секунд.
- Для MaxConcurrent Calls установлено значение 600, а для MaxConcurrentInstances установлено значение 1200.
- Тайм-ауты открытия, закрытия, отправки и получения установлены на 10 минут.
- Для HTTPWebRequest KeepAlive установлено значение false.
Мне не удалось зафиксировать проблему дляпоследние два дня.
Любая помощь будет оценена.
Спасибо.