我在Windows Web Server 2008 VPS上运行我自己的游戏服务器。 我已经对我遇到的问题做了一些研究。 如果已经连接了1000个客户端,我的应用程序不接受客户端。 这个应用程序基本上是一个进程运行六个套接字服务器(每个不同的端口),并没有限制连接客户端的代码。 以下是一些统计数据:
-------------------------------Server ID: 0 stats [22-03-2014 14:37:39] Stats: Players online: 160 [22-03-2014 14:37:39] Stats: Connections: 164 -------------------------------Server ID: 1 stats [22-03-2014 14:37:39] Stats: Players online: 515 [22-03-2014 14:37:39] Stats: Connections: 535 -------------------------------Server ID: 2 stats [22-03-2014 14:37:39] Stats: Players online: 108 [22-03-2014 14:37:39] Stats: Connections: 111 -------------------------------Server ID: 3 stats [22-03-2014 14:37:39] Stats: Players online: 59 [22-03-2014 14:37:39] Stats: Connections: 61 -------------------------------Server ID: 4 stats [22-03-2014 14:37:39] Stats: Players online: 74 [22-03-2014 14:37:39] Stats: Connections: 75 -------------------------------Server ID: 5 stats [22-03-2014 14:37:39] Stats: Players online: 52 [22-03-2014 14:37:39] Stats: Connections: 54 -----------------------------------Total stats [22-03-2014 14:37:39] Stats: Total players: 968 [22-03-2014 14:37:39] Stats: Total connected: 1000
“玩家”客户端是login的玩家,“连接的客户端/连接”是一次被监听的套接字的数量(login的玩家+玩家login)。 这是Windows Web Server 2008的限制吗?
在我看来,自从您使用2008 Web Edition以来,您可能违反了许可协议:
从这里 :
Windows Web Server 2008专门devise用作单一用途的Web服务器。 它只能用于互联网访问,Web页面,Web站点和Web应用程序的前端Web服务。
无论如何,Server 2008的Web版确实有10个同时半打开 TCP连接的限制,但是对于活动的TCP连接没有合理的限制,据微软员工说 :
它取决于版本,Web和Foundation版本有标准,企业和数据中心的连接限制。
但是,如果您始终如一地看到连接数达到1000,那么我还不确定半开放式TCP连接是否是您的问题。 如果没有仔细检查你的代码,不能告诉你更多。
但是,你也许应该离开Web Edition,因为你正在使用它来运行Web服务器以外的东西。 所以最好的答案,我想你会得到的信息,你已经提供给我们是没有,活动TCP连接是没有限制的任何地方是由操作系统或.NET框架强加的任何地方。 它能够处理许多,甚至更多。
编辑:我想你可以尝试更改registry项HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnableConnectionRateLimiting为0,但这可能会或可能不会工作,因为您的Windows Server的Web版,以及打开您可能的拒绝服务攻击(如果你实际上遇到半打开TCP连接的问题,我还没有确信你是运行一个netstat,看看你是否有一堆连接似乎卡在一个SYN_SENT状态。)