在WCF中,maxConcurrentSessions默认为10,因此限制服务器最多只能有10个打开的TCP连接。
为什么会这样呢?
如果一个服务器只有一些(或两个)客户端,但由于需要向客户端发送事件而需要保持每个客户端的netTcpBinding,那么将其设置为非常高的值是否安全?
为什么会这样呢?
如果一个服务器只有一些(或两个)客户端,但由于需要向客户端发送事件而需要保持每个客户端的netTcpBinding,那么将其设置为非常高的值是否安全?
WCF团队做出的决定可能令人困惑。为了限制攻击者发动DOS攻击,他们使得对您的服务进行DOS攻击变得更加容易。现在,您不再需要资源来向服务器发送请求以使其无法响应,而只需进行一些调用而不显式请求关闭连接并达到会话计数的最大值。除非将此值设置得非常高,否则您的服务器可能拒绝接受任何传入连接,尽管它的CPU使用率为零。
您可以将此设置得更高 - 只要您的服务器有足够的资源来处理请求。默认值为10,因为这将轻松击败任何针对您服务的拒绝服务攻击。如果您有一台专用于此单一服务的强大服务器,您可以将其设置为10,000。您不能使用一个神奇的数字来解决这个问题 - 您需要在需求和服务器资源之间取得平衡,并且这个最大并发会话数有助于防止崩溃!