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

2023-11-23

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

  • 将同时监控 80-100 000(八万)个客户端。
  • 我正在使用 .Net 来编写此内容。

客户端将使用 JavaScript(在 HTML 页面上)联系(单独的)服务器,告诉服务器它们处于活动状态/在线。

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

  1. 定期发送具有保持活动状态的持久连接。 这将使我能够更准确地了解客户端何时断开连接,并且我不需要太频繁地更新内存结构(在线信息),因为我们知道客户端何时来去。对网络设备/带宽的额外好处。

  2. 客户端定期(重新)连接以告诉服务器它们还活着。 这需要大量的连接,并且必然会降低准确性。我想 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(使用前将#替换为@)

如何在.Net 中处理多达 100k HTTP 连接 的相关文章

  • C# 数据表来保存表格(无限嵌套)

    我相对较新C 但来自C C 背景 我需要一个类似于的数据类型 类 DataTable 但允许存储的列保存 简单 类型 int float boolean string 以及相同类型的数据 以便一个列可以保存另一个表 该表也具有存储表等的列
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2
  • .NET UI 元素线程限制的原因

    我们知道 除了实例化元素的线程之外 不可能从任何线程执行操作任何 UI 元素属性的代码 我的问题是 为什么 我记得当我们使用 COM 用户界面元素时 在 COM Visual Basic 6 0 时代 所有 UI 元素都是使用 COM 类和
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 我可以将 SimpleInjectors 诊断结果写入日志文件吗?

    在调用中使用简单注入器container Verify 在我的配置结束时 并在调试器中获取诊断信息 如中所述文档 http simpleinjector codeplex com wikipage title Diagnostics 我想将
  • 编译器值类型解析和硬编码“0”整数值

    首先 介绍一些背景知识 阅读问题并接受答案发布在这里 https stackoverflow com questions 8352260 why does the sqlparameter name value constructor tr
  • 为什么在为 Silverlight 5 应用程序添加编码 UI 支持时 System.Core 无法加载?

    我遇到以下问题 尝试添加对为 Silverlight 5 应用程序创建编码 UI 测试的支持 MSDN 1 第一步是在 Silverlight 5 项目中引用程序集 Microsoft VisualStudio TestTools UITe
  • 真的不可能使用返回类型重载吗?

    我用两种方法在MSIL中制作了一个小DLL float AddNumbers int int int AddNumbers int int 你们中有些人可能知道 MSIL 允许您创建具有相同参数的方法 只要您具有不同类型的返回类型 称为返回
  • 将 Xml 反序列化为对象时出错 - xmlns='' 不是预期的

    我在尝试反序列化某些 XML 时遇到了真正的麻烦 希望有人可以提供一些帮助 我读过很多类似的帖子 但我无法解决这个问题 我正在尝试反序列化 XML
  • 使 .net web api 队列请求以“单线程”方式运行

    我们有一个 c net Web API 服务调用代码 该代码无法一次处理多个数据库请求 该系统适用于需求相对较小的账单在线支付 我们无法控制代码来进行可以解决问题的更改 另一个使用相同代码的小组使用 WCF API 和服务配置将并发请求限制
  • 实体框架代码首先保存后不延迟加载

    我的数据库中有一个查找表和一个数据表 我将使用性别和人物作为例子 假设性别表如下所示 Id Code 1 Male 2 Female 人员表如下所示 Id Name GenderId 1 Bob 1 2 Jane 2 我首先在 EF 代码中
  • 如何在Web网格的列中编写IF条件

    我在 WEB GRID 列中创建 if 条件时遇到错误 所以 请帮助改进我的代码并解决我的问题 grid Column Status format item gt
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 模拟 WCF 客户端代理的最佳方法

    有没有办法使用 Rhino 模拟框架来模拟 WCF 客户端代理 以便我可以访问 Channel 属性 我正在尝试对 Proxy Close 方法进行单元测试 但由于代理是使用抽象基类构造的ClientBase
  • 为什么抽象类应该实现抽象基类的抽象方法?

    在下面的示例中 该类Derived实现抽象方法method从课堂上Main 但我想不出在抽象中填写方法体的理由Derived类的实现 当然 我应该只在实际类中实现抽象方法 那么我怎样才能避免这样做呢 我还可以做些什么 abstract cl
  • 模拟对象 - 将所有方法声明为虚拟方法还是使用接口?

    与 Java 不同 net 中的方法默认不是虚拟的 为了使用大多数模拟对象框架 您要么必须将要在模拟上使用的方法标记为 真实 对象上的虚拟方法 要么必须有一个可以模拟被测试类将使用的接口接受代替执行 将每个方法标记为虚拟似乎是一种不好的形式
  • 什么可以解释托管堆上超过 5,000,000 个 System.WeakReference 实例?

    我一直在针对生产 ASP NET Web 应用程序运行负载测试 并且看到在堆上创建了大量 System WeakReference 在大约 15 分钟内 负载管理堆内存已飙升至大约 3GB 并且我有大约 5 000 000 个对 Syste
  • 线程睡眠和Windows服务

    我正在开发一个 Windows 服务 该服务存在一些问题Thread Sleep 所以我想我会尝试使用计时器 因为这个问题建议 在 Windows 服务中使用 Thread Sleep https stackoverflow com que
  • 如何使我的表单标题栏遵循 Windows 深色主题?

    我已经下载了Windows 10更新包括黑暗主题 文件资源管理器等都是深色主题 但是当我创建自己的 C 表单应用程序时 标题栏是亮白色的 如何使我自己的桌面应用程序遵循我在 Windows 中设置的深色主题 你需要调用DwmSetWindo

随机推荐

  • PHP 子进程的私有变量访问

    所以我正在尝试解决我在设计 PHP 类时遇到的问题 我创建了一个基类 并分配了私有变量 我有扩展此基类的子类 它们通过基类的函数引用和更改这些私有变量 这是一个例子 请记住我仍然对之间的区别感到困惑private and protected
  • 如何使用 Java Regex 查找字符串中的所有重复字符序列?

    使用 Java 和 Regex 解析随机字符串以查找重复序列 考虑字符串 啊啊啊啊啊啊 我想找到一个正则表达式来查找上述字符串中的所有匹配项 aaabbaaacccbb aaabbaaacccbb 将检查字符串中是否有重复的字符序列并返回这
  • 如何让列表迭代器从给定索引处开始?

    我有一个链接列表 我需要创建在列表中给定点返回迭代器的方法 我目前有一个从头部开始的迭代器 public Iterator
  • Webpack 和 Babel 未转译 node_modules 内的依赖项,由于 ES6 的扩展语法,该依赖项会破坏 IE 11 和 Edge

    我有一个项目使用 mdx js runtime它在 IE 11 或 Edge 上完全崩溃 Edge 44 18362 449 0 SCRIPT1028 SCRIPT1028 Expected identifier string or num
  • 运行“npm install”时,“x 个软件包正在寻找资金”是什么意思?

    我通常会得到 x packages are looking for funding 跑步时npm install on a react项目 知道这意味着什么吗 当你跑步时npm update在命令提示符中 完成后 它会建议您键入一个名为的新
  • 我们可以使用 Twilio iOS SDK 进行 VOIP 推送通知吗?

    我必须使用 Twilio iOS SDK 实现应用程序到应用程序的功能 我已经在应用程序运行时成功实现了语音通话 现在 当应用程序被杀死时 我面临一个问题 如何获取来电的 VOIP 推送通知 我指的是这个链接 https www twili
  • CouchDB 使用什么数据库查看器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我对 CouchDB 还很陌生 我用谷歌搜索没有找到 CouchDB 的数据库查看器 如何在不操作原始 HTTP 消息的情况下查看 CouchDB
  • ElasticSearch 中的 GET 一致性(和仲裁)

    我是 ElasticSearch 的新手 我正在评估它的一个项目 在 ES 中 复制可以是同步的 也可以是异步的 如果是异步 一旦文档写入主分片 客户端就会返回成功 然后将文档异步推送到其他副本 当异步写入时 我们如何确保当 GET 完成时
  • 枚举中的方法[重复]

    这个问题在这里已经有答案了 所以我对 Java 枚举是否可以有函数感到困惑 我正在制作一个简单的 html 编辑器 并想使用枚举来表示 html 标签 是的 我知道这不是最好的方法 但这是我的团队决定实现它的方式 所以我一直在尝试做这样的事
  • WAIT 和 BLOCKED 线程状态之间的区别

    线程状态 WAIT 和线程状态 BLOCKED 有什么区别 The Thread State 文档 Blocked等待监视器锁而被阻塞的线程就处于这种状态 Waiting无限期等待另一个线程执行特定操作的线程处于此状态 没有向我解释其中的差
  • 仅使用 HTML/JavaScript 创建购物车

    我不知道该怎么做才能完成这个项目 我需要创建一个仅使用一个 HTML 页面的购物车 我已经设置了表格来显示正在出售的商品 但我迷失的是 JavaScript 我不知道如何将 添加到购物车 按钮与所有必要的数据 名称 描述和价格 链接起来 以
  • 有没有办法将数字四舍五入为读者友好的格式? (例如 1100 美元)[已关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 就像 Stack Overflow 声誉四舍五入一样 我希望对货币做同样的事情 1 000 美元 gt 1 000 美元 1 000 000 美元 gt 100 万美元 我如何在 J
  • 初始化后设置TinyMCE编辑器参数

    我正在尝试设置readonlytinyMCE 中的参数为true在tinyMCE初始化之后 如果帖子已经发布 我尝试将其与 WordPress 一起使用来禁用帖子编辑器 我发现一些消息来源声称您可以致电 tinyMCE activeEdit
  • 使用 setTimeout 调用方法的自定义对象失去范围

    我在构建 Javascript 对象并使用 setTimeout 调用该对象内的方法时遇到问题 我尝试了各种解决方法 但在循环的第二部分中 范围总是成为窗口对象而不是我的自定义对象 警告 我对 javascript 还很陌生 my code
  • 在 django-crispy-forms 中使用字段标签作为占位符

    我正在考虑使用字段标签作为我的占位符属性的 DRY 方法
  • 使用 PHP SDK 在 Facebook 页面上发帖

    我想通过我的网站在页面上发布 我在文档中没有找到任何可以帮助我的内容 谷歌结果也没有给出我的答案 function post facebook data null result require once ROOT apps configur
  • 在字符第 n 次出现时剪切字符串

    我想做的是取一个字符串 例如 this those that 并从第 n 次出现的字符获取子字符串 因此 从字符串的开头到第二次出现 会回来 this those 同样 从第二次出现开始 到字符串末尾将返回 that 抱歉 如果我的问题很模
  • this.constructor.prototype —— 不能完全覆盖,但可以编写单独的 props?

    TL DR 为什么我不能从构造函数内覆盖构造函数的原型 我正在弄清楚我的原型继承模式 我不喜欢原型通常如何从构造函数外部定义 并且希望在逻辑上更好地封装事物 我发现我期望的那条神奇的路线不起作用 function Orifice this
  • opencv - 视频编写器控制比特率

    我有一个可用的 python 脚本 它使用 opencv 的视频编写器 source https gist github com stanchiang b4e4890160a054a9c1d65f9152172600 如果我接收一个文件 无
  • 如何在.Net 中处理多达 100k HTTP 连接

    我正在创建一个服务器来监视网页上客户端的在线状态 将同时监控 80 100 000 八万 个客户端 我正在使用 Net 来编写此内容 客户端将使用 JavaScript 在 HTML 页面上 联系 单独的 服务器 告诉服务器它们处于活动状态