2011-09-06 91 views
5

我們在高流量站點中有一個WCF net.tcp服務。 http://www.artedelcorpo.com/WCF連接限制

它很好地工作了一段時間,然後停止並返回超時錯誤。 當我重新啓動IIS時,它再次運行。

爲什麼? 連接是否有限制?

+1

運行WCF跟蹤可能會提供一些見解。 –

+1

錯誤是:「System.Net.Sockets.SocketException(0x80004005):由於線程退出或應用程序請求導致I/O操作中止」 – user758977

回答

9

NetTcp綁定有10個連接的默認設置。您可以在配置的<binding>部分增加此項。超時也是如此 - 默認值爲1分鐘,但您也可以調整關閉超時,打開超時,接收超時和發送超時。

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
      <binding name="MyNetTcpBinding" closeTimeout="00:05:00" 
        openTimeout="00:05:00" receiveTimeout="00:05:00" 
        sendTimeout="00:05:00" maxConnections="100" /> 
     <netTcpBinding> 
    </bindings> 
</system.serviceModel> 

將上述樣品將設置超時到5分鐘,最大連接數爲100。

更多細節/信息,請參見<netTcpBinding>

+0

感謝您的答覆。我設置了10分鐘超時和1000個連接。我們每天約有7000名獨特訪客。 – user758977

5

增加網絡超時會讓您花費時間處理請求。這可以幫助您在短時間的高流量中生存下來,但不會改變您的系統吞吐量。

如果在發生這些問題時,您的硬件在內存和CPU方面仍然存在一些空間,則應該考慮更改併發節流閥。這將允許更多的請求被並行處理。 default throttle values in .NET 3.5實際上相當保守,這可能是一個快速修復(取決於您的服務體系結構)。

這裏有一些很好的配置示例WCF service throttles

如果您的硬件已超時,並且您仍然收到超時,那麼可能需要對服務進行羣集並添加另一個節點。