簡體   English   中英

如何控制webHttpBinding服務上的入站連接數?

[英]How to control number of inbound connections on webHttpBinding service?

我有一個標准的Web服務,它通過webHttpBinding處理JSON請求。 我試圖找出是否可以處理多少並發連接以及如何控制它沒有限制。 找不到任何東西。 我缺少一些簡單的設置嗎?

這是我服務的框架:

[ServiceContract]
public interface IMyService {...}

[ServiceErrorBehavior(typeof(ErrorHandler))]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyService {...}

我對此有一些建議,但這不會是與配置直接相關的更改。 堅持閱讀。

在WCF中,為ServiceBehavior定義了InstanceContextMode和ConcurrencyMode屬性。 這些參數只能在服務代碼中進行配置,而不能在XML配置中進行配置,因為它們與服務的運行時行為相關,並且服務開發人員應注意其值。 InstanceContextMode參數確定WCF運行時必須創建多少個服務實例。 可能的值為:

  • PerCall :為每個調用創建一個新的InstanceContext對象。
  • PerSession :為每個會話創建一個新的InstanceContext對象。 如果通道未創建會話,則該值的行為就像PerCall。這是默認值。
  • Single :僅一個InstanceContext對象用於所有傳入呼叫,並且不會在呼叫之后回收。 如果服務對象不存在,則會創建一個。

更有用的博客

使用WCF服務限制來控制服務。

<behaviors>
  <serviceBehaviors>
    <behavior  name="Throttled">
      <serviceThrottling 
        maxConcurrentCalls="1" 
        maxConcurrentSessions="1" 
        maxConcurrentInstances="1"
      />
    </behavior>
  </serviceBehaviors>
</behaviors>

始終記住,服務行為不會覆蓋主機(或綁定)中定義的限制。 例如,當使用webHttpBinding時,可能需要為大並發值更改默認的IIS最大並發連接數

事實證明,它與線程有關的比什么都重要。 默認的ASP.NET設置非常保守,因此您必須提高設置。 一旦這樣做,並發連接瓶頸就完全消失了。

確保在相應的machine.config(而非web.config)中具有以下內容:

<configuration>
  <system.net>
    <connectionManagement>
      <add address="*" maxconnection="100" />
    </connectionManagement>
  </system.net>
  <system.web>
    <processModel 
        autoConfig="true"
        maxWorkerThreads = "100"
        maxIoThreads = "100"
        minWorkerThreads = "50"
        minIoThreads = "50"
         />
    <httpRuntime 
        minFreeThreads="176" 
        minLocalRequestFreeThreads="152" 
    />
  </system.web>
</configuration>

我從Stuart Brierley的“ 調優IIS”文章中獲取了所有這些信息。 我從他的建議中做出的唯一重大更改是maxConnection值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM