2010-02-25 27 views
6

我收到以下通信例外情況:我的wcf服務使cal成爲另一個wcf服務: 「已超過傳入郵件的最大郵件大小限額(65536)。要增加配額,請使用適當的MaxReceivedMessageSize屬性綁定元素「。wcf中配置屬性MaxReceivedMessageSize的最大限制是否會影響服務性能?

我解決了這個通過增加尺寸如下: maxReceivedMessageSize =「5000」

但是,在這裏,我想知道是否增加郵件大小,以這麼大的水平的任何副作用。

回答

5

是的 - 可能。 WCF默認保持低限(64K)的原因是這樣的:假設你的服務器忙於響應請求,比如幾十或幾百個,並且它們都需要最大的消息大小。

您的服務器可能必須同時分配數十個或數百個消息緩衝區 - 如果您有100個用戶,並且每個請求64K,即6.4 MB,但是如果您有200個用戶並且每個請求5 MB - 那就是服務器中的千兆字節的RAM - 僅用於消息緩衝區,用於一項服務。

所以是的 - 對最大消息大小加以限制確實有意義,它有助於管理服務器的內存消耗(從而降低性能)。如果你打開它太廣泛,攻擊者可能會做出這樣的攻擊 - 淹沒你的服務器虛假請求,每個分配儘可能多的內存,最終將你的服務器關閉(這樣的拒絕服務攻擊很常見) 。

+0

因此,如果我們在服務/服務器端配置文件中設置它,那麼它不僅用於響應bu,它表示接收請求。我理解正確嗎?我們是否也可以限制服務器端的響應?我的意思是我希望我的服務能夠最大生成2 MB響應。但發生異常,我想避免發送更大的響應。我有服務方面的設置嗎? – batmaci 2013-11-19 15:54:58

0

您需要根據Web服務增加配額。如果使用非常大的值,我可以想到的一個副作用是內存使用量會增加,但您可以安全地將其增加到合適的值,而不會產生任何負面影響。

相關問題