[英]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運行時必須創建多少個服務實例。 可能的值為:
使用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.