我正在创建一个服务器来监视网页上客户端的在线状态。
- 将同时监控 80-100 000(八万)个客户端。
- 我正在使用 .Net 来编写此内容。
客户端将使用 JavaScript(在 HTML 页面上)联系(单独的)服务器,告诉服务器它们处于活动状态/在线。
我正在考虑以下两种方法之一:
定期发送具有保持活动状态的持久连接。
这将使我能够更准确地了解客户端何时断开连接,并且我不需要太频繁地更新内存结构(在线信息),因为我们知道客户端何时来去。对网络设备/带宽的额外好处。
客户端定期(重新)连接以告诉服务器它们还活着。
这需要大量的连接,并且必然会降低准确性。我想 2-3 分钟这样的间隔是我们能做到的最好的。每秒 80k/120=660 个连接……ASP.Net 执行速度不太快,所以我对此不确定。 8 核系统 = 每次执行约 10 毫秒。
如此多的连接显然存在一些限制。例如,我无法同时生成那么多线程。
对 IIS 的 1 个请求生成 ASP.Net 应用程序将使用 1 个线程,直到请求完成。
编写独立的 http 服务器是最好的选择吗?
.Nets TcpListener 不利用 httpd.sys (IIS) 吗?
关于该主题的任何(建设性)想法将不胜感激。
编辑:通过 Nicolas Repiquets 答案中的以下链接找到此帖子,添加一些有用的链接:
- 使用 .NET 中的高性能套接字更接近线路
- 高性能 C# 服务器套接字的提示/技术
- 使用 C#.NET 的高性能 TCP/IP 服务器
100 000 个持久连接不是一个可行的选择。
定期发送 HTTP 请求更为可行,并且编写专用的 HTTP 服务器在我看来是一个有趣的选择。
看一眼这个问题对于一些方向。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)