2015-12-28 4 views
0

Я написал службу WCF с привязкой NetTcp.WCF получает время с исключением сокета

<bindings> 
     <customBinding> 
     <binding name="CustomNetTcpBinding" closeTimeout="00:01:00" openTimeout="00:03:00" receiveTimeout="00:15:00" sendTimeout="00:15:00"> 
      <transactionFlow /> 
      <gZipMessageEncoding enableCompression="true" innerMessageEncoding="textMessageEncoding"> 
      <readerQuotas maxDepth="999999999" maxStringContentLength="999999999" maxArrayLength="999999999" maxBytesPerRead="999999999" maxNameTableCharCount="999999999" /> 
      </gZipMessageEncoding> 
      <windowsStreamSecurity /> 
      <tcpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" /> 
     </binding> 
     </customBinding> 
     <netTcpBinding> 
     <binding name="TcpAuthWindows" closeTimeout="01:01:00" openTimeout="01:10:00" receiveTimeout="01:10:00" sendTimeout="00:10:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="21474836470" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"> 
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> 
      <security mode="Message"> 
      <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> 
      <message clientCredentialType="Windows" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </netTcpBinding> 
    </bindings> 

У меня есть служба WCF на IIS.

Сервис работает отлично до 105 одновременных вызовов, после чего он начнет давать мне сокет ошибку, как указано ниже ...

The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '01:09:59.1099110'. 

Я написал мой тестовый случай, как на http://blogs.msdn.com/b/endpoint/archive/2011/05/04/wcf-scales-up-slowly-with-bursts-of-work.aspx

Мои вопросы. ..

  1. Как обрабатывает запрос WCf после его загрузки. Есть ли запрос по трубопроводу или очереди.
  2. Как разрешить это означает, что запрос не должен быть ошибочным. Он должен ждать, пока служба WCF не сможет принять новый запрос.

Чинги заранее.

ответ

1

WCF будет запрашивать очередь, когда достигнут предел подключаемых запросов.

Невозможно гарантировать, что запрос не будет выполнен, но вы можете уменьшить вероятность того, что это произойдет. Например, у клиента есть тайм-аут, очередь для обработки имеет тайм-аут.

Для получения дополнительной информации по каким параметрам можно настроить посмотреть:

http://weblogs.asp.net/paolopia/wcf-configuration-default-limits-concurrency-and-scalability