2010-01-22 55 views
2

我们注意到这个值的唯一时间似乎是服务因为值太低而崩溃的时候。解决这个问题的快速方法是将其设置为一些非常大的数字。然后没问题。WCF MaxReceivedMessageSize的点是什么?

我想知道的是,是否有任何负面的后果来设置这个值高?

我可以看到,它可能会给拒绝服务攻击提供一些保护,但它有没有其他功能?

+1

我认为重点是作为保护agains拒绝服务攻击,就像你说的 – 2010-01-22 13:35:17

回答

3

它有助于限制您的WCF服务器的压力。如果允许1'000个连接,并且允许每个连接向您发送1 MB数据 - 您的服务器可能需要1 GB RAM - 否则可能会发生大量交换/垃圾。

消息大小限制(以及并发连接/调用的限制)有助于将RAM使用(以及CPU使用率)保持在可管理的级别。

它还允许您扩展,具体取决于您的服务器。如果您拥有单核CPU和4 GB或RAM,则可能无法像处理16路CPU和32 GB或更多内存那样处理相当多的流量。通过包括MaxReceivedMessageSize在内的各种设置,您可以将WCF环境调整为基础硬件的功能。

当然,正如您已经提到的那样:WCF中的许多设置保持OFF或设置为较低值,专门用于阻止恶意用户使DoS攻击淹没您的服务器并关闭它。

+0

谢谢你的回答。只是为了确保我已经理解了它。在你的例子中,如果你允许1MB和连接发送10kB的消息。在服务器上是否会分配1MB的内存,还是只使用10Kb? – 2010-01-22 15:42:27

+2

据我所知,如果服务电话需要10kb,它将分配10kb - 不多。 1 MB的限制就是这个 - 一个上限。如果服务呼叫请求超过1 MB,则会被拒绝。但WCF不会仅仅分配1 MB而不需要它。 – 2010-01-22 16:50:56