在ASP.NET 4.5中限制WebSocket的性能因素?

Kam*_*eri 23 c# asp.net html5 websocket

MSDN文档似乎没有很好地覆盖HTML5 WebSockets协议的 ASP.net 4.5支持!

这就是我要找的东西:

  • 服务器/应用程序/ cpu支持多少个活动连接?
  • 是否有可以设置/获取的最大传入连接数?
  • 无论通过套接字传输数据,每个应用程序的最佳套接字数是多少?

更新:

可以在Adobe Media Server应用程序服务器上很好地配置来自Flash RTMP套接字(websocket的替代方案)的请求.对于ASP.net内部应用程序或IIS 8配置,请求数量,理想时间,块大小,......的任何配置都不是吗?

Kam*_*eri 35

对于任何可能感兴趣的人:

  • 可以对运行ASP.NET 4.5的单个服务器进行超过100k的WebSocket连接
  • WebSocket连接由HTTP握手启动,因此适用于HTTP请求的一些IIS限制 也将应用于WebSockets. appConcurrentRequestLimit在IIS配置中可用于设置每个应用程序的最大并发请求数:

    <serverRuntime appConcurrentRequestLimit="250000" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 可以使用ApplicationPool的maxConcurrentRequestsPerCPU属性设置与ASP.net 4 Web应用程序的最大并发连接:

    <system.web>
        <applicationPool maxConcurrentRequestsPerCPU="20000" />
    </system.web>
    
    Run Code Online (Sandbox Code Playgroud)
  • 当连接总数超过 maxConcurrentRequestsPerCPU设置时,ASP.NET将使用队列启动限制请求.要控制队列的大小,可以调整machine.config requestQueueLimit:

    <processModel autoConfig="false" requestQueueLimit="250000" />
    
    Run Code Online (Sandbox Code Playgroud)
  • 在进行并发测试和调整上述详细设置时,应考虑以下性能计数器:

    • 所有堆中的NET CLR内存#bytes
    • ASP.NET \请求当前 - 已排队 - 已拒绝
    • 处理器信息\处理器时间
    • TCP/IP连接已建立
    • Web服务\当前连接 - 最大连接数
    • .NET CLR LocksAndThreads \#当前逻辑线程数 - 当前物理线程数

  • 使用HttpListener/OWIN我已经设法在一个Azure VM上通过C#中的SSL通过.NET Websockets获得982Mbps的出站 - 所以吞吐量也非常好. (5认同)