发现不少同学在用.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. 记录以下docker的基本命令

    docker search xxx(tag)      在OFFICIAL上ok的是官方镜像    这里也可以去dockerhub上面看到   搜索xxx镜像docker images查看本地所安装的 ...

  2. C# 动态调用WebService 3

    using Microsoft.CSharp; using System; using System.CodeDom; using System.CodeDom.Compiler; using Sys ...

  3. SpringMVC之拦截器的的配置和使用

    拦截器与过滤器的区别:拦截器只能拦截controller的请求,过滤器可以过滤所有请求 (1)实现HandlerInterceptor接口 在执行控制器中的方法之前执行preHandle()中的方法 ...

  4. github错误:fatal: remote origin already exists.

    原文链接:http://blog.csdn.net/dengjianqiang2011/article/details/9260435 如果输入$ Git remote add origin git@ ...

  5. java课程之团队开发冲刺阶段1.4

    一.总结昨天进度 1.昨天任务全部完成 二.遇到的问题 1.对数据库的使用陌生 2.使用sqlite有些困难 3.对如何解决查询课程问题暂时没有找到好的解决方案 三.今日任务 1.由于周一的课程比较紧 ...

  6. EventBus学习笔记(一)

    EventBus是Android和Java的发布/订阅事件总线 EventBus分三个步骤 1.定义事件 public static class MessageEvent { /* Additiona ...

  7. SpringMVC的配置和使用

    SpringMVC的配置和使用 什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于 ...

  8. Docker的基本概念

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  9. FCC(ES6写法) Symmetric Difference

    创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组. 给出两个集合 (如集合 A = {1, 2, 3} 和集合 B = {2 ...

  10. Oracle:WITH AS () Merge ?

    WITH AS 语法在SQL SERVER 和ORACLE数据库上均支持,主要用于子查询.语法如下: WITH expression_name [ ( column_name [,...n] ) ] ...