MSDN文档似乎没有很好地覆盖ASP5 4.5对HTML5 WebSockets protocol的支持!
这就是我要找的:
更新
可以在Adobe Media Server应用服务器上很好地配置来自flash RTMP套接字的请求(websocket的替代方案)。对于应用程序或IIS 8配置中的ASP.net,请求数量,理想时间,块大小......是不是有任何配置?
答案 0 :(得分:34)
对于任何可能感兴趣的人:
WebSocket连接由HTTP发起
握手,因此有些IIS throttles that apply to HTTP requests
也适用于WebSockets。
IIS配置中的appConcurrentRequestLimit
可用于设置每个应用程序的最大并发请求数:
<serverRuntime appConcurrentRequestLimit="250000" />
可以使用ApplicationPool's maxConcurrentRequestsPerCPU属性设置与ASP.net 4 Web应用程序的最大并发连接数:
<system.web> <applicationPool maxConcurrentRequestsPerCPU="20000" /> </system.web>
当总连接数超过时
maxConcurrentRequestsPerCPU
设置,ASP.NET将使用队列启动限制请求。要控制队列的大小,您可以
调整machine.config requestQueueLimit:
<processModel autoConfig="false" requestQueueLimit="250000" />
应考虑以下性能计数器 进行并发测试并调整最佳设置 详细说明:
答案 1 :(得分:0)
编辑:此答案与.Net 4.0或更早版本有关,其中WebSockets必须由您自己实现(.Net 4.5 + IIS为您提供解决方案)。所以它只涉及你自己在TCP Layer之上的WebSockets实现。
.Net可以处理的套接字数量取决于系统和服务套接字的方式。阅读:http://msdn.microsoft.com/en-us/library/windows/desktop/ms739169%28v=vs.85%29.aspx
WebSockets实现使用异步方式提供数据的接收和发送。这使它们具有很高的可扩展性,并且每个连接不需要大量内存。 因此,连接套接字的数量取决于每个连接和硬件的应用程序逻辑的复杂性。在大多数情况下,您将面临处理应用程序逻辑的性能问题,然后面临仅基于连接套接字的性能问题。
如果您使用基于原始TCP套接字的自己的实现,则此信息将适用:
在单个网络设备上,您可以绑定少于65k的插槽。这是接受连接的侦听套接字。在通常的服务器实现中,您几乎不会使用多于或几十个套接字来接受连接。
客户端套接字可以与您的实现和内存可以处理的一样多。
有许多服务套接字的方法,可以让你处理更多的套接字。 几个亮点:
阻止服务套接字的方式将延迟服务每个套接字。同样,客户端套接字的非阻塞读取将使用您的cpu来检查是否有可用的数据。有了大量的插座,它可以非常省钱。
每个客户端套接字的线程将使用大量内存(每个线程超过1mb),这将允许每个物理系统使用少量套接字。
最好的(imho)选项之一是使用异步套接字。这使得你可以拥有数千个套接字,并且在单个服务器系统上实现了数十甚至数十万个套接字。