发现不少同学在用.NET做通讯的时候都关心一个问题,.NET能支持多少个在线连接。其实.net的通讯由winsocket所支持,既然由低层的winsocket所支持那.NET其端的接入连接数的受限完全取于winsocket当前操作系统的限制。

65535的限制?

有很多同学认为由于端口有限,所以接入的连接会受端口资源限制。其实对于服务端的连接接入是不会产生端口资源的分配,它只分配相应的操作系统句柄。所以可接入的连接不会不会受端口数的限制。其实WIN预留可接入的连接数上限值还是非常大的,通过以下注册表值可以了解到

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
TcpNumConnections = 0x00fffffe (Default = 16,777,214)

从值来看是1000多万个接入限制,当然这紧紧是一个值实上当前操作系统和内存资源是否支持这么多句柄实例也很难说……由于连接的接入紧紧是创建和分配相应的句柄资源。如果内存够大的情况的确可以支持很多的连接数接入,当然还需要操作系统支持管理这么多句柄实例。

测试

针对一些同学说6W个连接的做一下简单的测试

从测试结果来看.NET支撑这个在线连接数那是没有压力的,单个连接每10秒交互一个消息和一些新连接接入,如果没消息交互估计CPU资源看不到有百份比。

并发的理解

在交流过程发现大家对并发的理解都有些不同,有些同学并发是指同时在线的连接数,但有些同学则理解为当前服务同时处理的消息量(秒)。其实两者异差还是非常大的。一个简单的例子现在你有10个客户,他们同一天走来向你谈业务累,不是约个时间一天谈一个累呢?虽然总体工作量一样,但前者很有可能产生资源崩溃导致后面无法继续工作……。同样在服务处理上也一样,连接数再多只要不产生数据交互和逻辑处理只是在内存里占个坑是不影响CPU资源的。所以评估一个服务的时候最好是结合实际业务出发,如果客户要求10W在线,而每个客户十来秒才产生一个交互;那这种硬件可行性还是很好评估的;但如果业务上是每个客户每秒都要交互大量业务数据,那从硬件资源和带宽上就比较难以规划,可能要做一些可行性测试才能评估出来。

探讨.net Socket支持在线连接数量的更多相关文章

  1. .NET Socket TCP 50W在线连接交互测试

    在平常的交流中经常有人问.net socket能支持多少在线?和C++或linux下比起来应该差很远吧?其实产生这样问题的主要原因是.net很少人去做这方面的测试,而在linux下则经常听到什么100 ...

  2. Python进阶开发之网络编程,socket实现在线聊天机器人

    系列文章 √第一章 元类编程,已完成 ; √第二章 网络编程,已完成 ; 本文目录 什么是socket?创建socket客户端创建socket服务端socket工作流程图解socket公共函数汇总实战 ...

  3. HslCommunication库的二次协议扩展,适配第三方通讯协议开发,基础框架支持长短连接模式

    本文将使用一个gitHub开源的项目来扩展实现二次协议的开发,该项目已经搭建好了基础层架构,并实现了三菱,西门子,欧姆龙,MODBUS-TCP的通讯示例,也可以参照这些示例开发其他的通讯协议,并Pul ...

  4. <转>Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包

    最近项目中需要使用HTTP与Socket,把自己这段时间学习的资料整理一下.有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧.我们项目的需求是在登录的时候使用HTTP请求, ...

  5. TCP/IP,http,socket,长连接,短连接——小结。

    来源:http://blog.chinaunix.net/uid-9622484-id-3392992.html TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. ...

  6. TCP/IP,http,socket,长连接,短连接——小结(转)

    概要: 之前对这几个概念有点糊涂,查阅了些资料,稍微概括下他们的区别吧.如有错误,请拍~~~ 先看图: TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.    在 ...

  7. 关于SignalR连接数量问题的记录

    在使用SignalR的项目测试时遇到了一个问题,开发环境用的是Win10的操作系统,在VS2017调试环境中运行项目,连接多个SignalR客户端是没有问题的,例如,三个用户在一个聊天室同时聊天.但是 ...

  8. TCP/IP,http,socket,长连接,短连接 —— 小结

    TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层.    在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议.    在传输层中有TCP协议 ...

  9. Unity3D 游戏引擎之C#使用Socket与HTTP连接server数据传输包

    近期比較忙.有段时间没写博客拉.近期项目中须要使用HTTP与Socket.雨松MOMO把自己这段时间学习的资料整理一下. 有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧. ...

随机推荐

  1. Sightseeing trip POJ - 1734 -Floyd 最小环

    POJ - 1734 思路 : Floyd 实质 dp ,优化掉了第三维. dp [ i ] [ j ] [ k ] 指的是前k个点优化后    i  ->  j   的最短路. 所以我们就可以 ...

  2. 通过Ajax来简单的实现局部刷新(主要为C#中使用的UpdatePanel控件和ScriptManager控件)

    1. ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果.UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为 ...

  3. 我对PMO的理解(持续更新)

    PMO的价值 为项目管理提供方法上的指导,对项目的实施过程提供监督.评价. PMO应该从哪方面着手建立管理体系 如何量化工作 如何考评工作 如何激励员工 如何进行人工.成本核算 如何进行进度跟踪与控制 ...

  4. Unity 图形处理(切分与拉伸)

    素材的导入设置 1.导入的图片要设置为 Sprite 才能作为UI使用 2.如果需要进行切分,Sprite Mode 选择 Multiple 进行切分和拉伸设置 1.点击进入精灵编辑视图 2.点击按钮 ...

  5. C# 去除\0

    在做项目的时候遇到了这种情况,如图 这个字符串包含了好多的\0,等你放大查看的时候又什么都不显示,十分惹人烦,哈哈 网上有的解决办法说 tmpStr.TrimEnd("\0");但 ...

  6. Y1S002 xshell脚本编写示意

    SecureCRT可以自己录制脚本,非常的方便:但是考虑到CRT收费,所以不计划把CRT作为使用的终端. vbs脚本(test.vbs): Sub main xsh.Screen.Synchronou ...

  7. [微信跳转链接]之WAP浏览器跳转微信指定页面,微信跳转链接

    今天在一个小说的链接上看到最后,点击一个[继续阅读按钮]居然唤起微信APP,在微信内打开一个二维码,长按识别后可关注微信公众号, 后来分析出:weixin://dl/business/?ticket= ...

  8. select2使用小结

    做项目考虑到使用的便捷,要用到select2,就研究了一下,做个小结,防止忘记.本文内容是建立在NFine框架上的,使用的MVC三层架构.本人很少写文章,学习的知识也过少,不知道能不能表达准确,如有错 ...

  9. hashlib模块,shutil,模块 ,,xml 文件解析,configparser,模块,类,什么是类

    1 什么是hash hash是一种算法,该算法接受传入的内容,经过运算得到一串hash值 如果把hash算法比喻为一座工厂 那传给hash算法的内容就是原材料 生成的hash值就是生产出的产品 2.为 ...

  10. 关于分页器border重叠问题

    .paging li { cursor: pointer; display: inline-block; float: left; box-sizing: border-box; margin-lef ...