簡體   English   中英

如何限制IIS中WCF服務的實例數?

[英]How to limit the number of instances of a WCF service in IIS?

我的WCF服務被多次實例化,直到系統內存不足? 如何在IIS 7中設置單個實例?

我的WCF服務已經通過屬性設置為單個實例,但是IIS似乎忽略了這一點:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
    ConcurrencyMode = ConcurrencyMode.Multiple)]

可以將WCF服務定義為單例-我建議不要這樣做。 您將陷入很多麻煩-性能和擴展問題,而要解決這些問題,您將不得不處理多線程,線程安全的編程-一切都很混亂。

您應該做的是使用按呼叫實例化設置,並將服務器限制在您認為合理的范圍內。 有一個稱為“ serviceThrottling”的服務行為,它允許您定義諸如要允許的服務類並發實例的數量,要處理的並發調用的數量等內容。

默認情況下,這些值設置得很低,如果您有設備齊全的服務器,則可以輕松地提高這些值。 您可以在服務器的web.config中定義如下:

<behaviors>
    <serviceBehaviors>
        <behavior name="throttled">
            <serviceThrottling
                maxConcurrentCalls="16"
                maxConcurrentInstances="26"
                maxConcurrentSessions="10" />
        </behavior>
    </serviceBehaviors>
</behaviors>

(以上值為默認值)

閱讀這些出色的博客文章,了解服務限制及其所有詳細信息:

您是否可以覆蓋web.config中的屬性? 您如何知道客戶端調用多次實例化您的服務(而不是通過服務器上創建多個實例的代碼)?

暫無
暫無

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

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