如何在.Net中处理多达100k个HTTP连接

我正在创建一个服务器来监视网页上客户端的在线状态。

  • 将有80-100,000(八万)个同步客户端进行监控。
  • 我使用.Net来写这个。
  • 客户端将使用JavaScript(在HTML页面上)联系一个(单独的)服务器,告诉服务器他们是活着的/在线​​的。

    我正在考虑两种方法之一:

  • 持续保持连接并定期发送。 当客户端断开连接时,这会给我更高的精度,并且我不需要经常更新内存结构(onlineinfo),因为我们知道客户端何时来去。 网络设备/带宽的其他好处。

  • 客户端(重新)间隔连接,告诉服务器他们还活着。 这需要很多连接,并且必然会降低准确性。 我想像2-3分钟的时间间隔是我们能做的最好的。 每秒80k / 120 = 660个连接... ASP.Net不会执行得太快,所以我不确定这一点。 8核心系统=每次执行约10毫秒。

  • 有了这么多的连接,显然有一些限制。 例如,我不能同时产生多个线程。 1请求到IIS产卵ASP.Net应用程序将使用1个线程,直到请求完成。

    编写一个独立的http服务器是最好的选择吗? 不.Nets TcpListener利用httpd.sys(IIS)?

    任何(建设性)关于这个问题的想法将不胜感激。

    编辑:添加一些有用的链接,通过下面的链接从Nicolas Repiquets回答:

  • 使用.NET中的高性能套接字接近线路
  • 高性能C#服务器套接字的技巧/技巧
  • 使用C#.NET的高性能TCP / IP服务器

  • 100 000个持续连接不是一个可行的选择。

    间隔发送HTTP请求更为可行,编写专用的HTTP服务器是IMO的一个有趣选择。

    看看这个问题的一些方向。


    我知道你具体说.NET,但你应该看看NodeJS,因为它确实是你要做的,但它是服务器端JavaScript。

    链接地址: http://www.djcxy.com/p/48743.html

    上一篇: How to handle up to 100k HTTP connections in .Net

    下一篇: How to send large file using Spring REST multipart in chunks (REST client)