探讨.net Socket支持在线连接数量
发现不少同学在用.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支持在线连接数量的更多相关文章
- .NET Socket TCP 50W在线连接交互测试
在平常的交流中经常有人问.net socket能支持多少在线?和C++或linux下比起来应该差很远吧?其实产生这样问题的主要原因是.net很少人去做这方面的测试,而在linux下则经常听到什么100 ...
- Python进阶开发之网络编程,socket实现在线聊天机器人
系列文章 √第一章 元类编程,已完成 ; √第二章 网络编程,已完成 ; 本文目录 什么是socket?创建socket客户端创建socket服务端socket工作流程图解socket公共函数汇总实战 ...
- HslCommunication库的二次协议扩展,适配第三方通讯协议开发,基础框架支持长短连接模式
本文将使用一个gitHub开源的项目来扩展实现二次协议的开发,该项目已经搭建好了基础层架构,并实现了三菱,西门子,欧姆龙,MODBUS-TCP的通讯示例,也可以参照这些示例开发其他的通讯协议,并Pul ...
- <转>Unity3D研究院之C#使用Socket与HTTP连接服务器传输数据包
最近项目中需要使用HTTP与Socket,把自己这段时间学习的资料整理一下.有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧.我们项目的需求是在登录的时候使用HTTP请求, ...
- TCP/IP,http,socket,长连接,短连接——小结。
来源:http://blog.chinaunix.net/uid-9622484-id-3392992.html TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. ...
- TCP/IP,http,socket,长连接,短连接——小结(转)
概要: 之前对这几个概念有点糊涂,查阅了些资料,稍微概括下他们的区别吧.如有错误,请拍~~~ 先看图: TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在 ...
- 关于SignalR连接数量问题的记录
在使用SignalR的项目测试时遇到了一个问题,开发环境用的是Win10的操作系统,在VS2017调试环境中运行项目,连接多个SignalR客户端是没有问题的,例如,三个用户在一个聊天室同时聊天.但是 ...
- TCP/IP,http,socket,长连接,短连接 —— 小结
TCP/IP是什么? TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在传输层中有TCP协议 ...
- Unity3D 游戏引擎之C#使用Socket与HTTP连接server数据传输包
近期比較忙.有段时间没写博客拉.近期项目中须要使用HTTP与Socket.雨松MOMO把自己这段时间学习的资料整理一下. 有关Socket与HTTP的基础知识MOMO就不赘述拉,不懂得朋友自己谷歌吧. ...
随机推荐
- myBase Desktop 6.5.1 无限期试用
清空安装目录下的"nyfedit.ini"文件的"App.UserLic.FirstUseOn="配置项的值
- SQL Server 获取 ActiveDirectory 用户信息
SQL Server 是可以访问活动目录中的用户信息的. 1. 先用domain administrator建立一个linked server 2. 然后用OpenQuery去查询活动目录 大家可 ...
- Mac下使用数据库将Excel数据转换存入.plist
记录于2013/10/26 基本步骤: 1.将Excel表格另存为.csv格式 2.用类似TextWrangler工具将.csv文件转成UTF-8格式 3.使用火狐插件SQLite Manager ...
- Spring Cloud微服务笔记(五)Feign
Feign 一.Feign概述 Feign是一个声明式的Web Service客户端.在Spring Cloud 中使用Feign,可以做到 使用HTTP请求访问远程服务,就像调用本地方法一样,同时它 ...
- Scrapy架构概述
Scrapy架构概述 1, 从最初自己编写的spiders,获取到start_url,并且封装成Request对象. 2,通过engine(引擎)调度给SCHEDULER(Requests管理调度器) ...
- python学习:列表
列表 a = ['abc','bcd','cde','def','efg']print(a)列表的操作:增删改查 1)查:切片print(a[1:3]) #从'bcd'取到'cde',列表取值顾头不顾 ...
- 181102 Windows下安装kivy(用python写APP)
了解到Instgram,知乎等APP是用python写的.我也决定学习用python写APP.这里我们需要安装kivy. 环境:win7,python3.6 安装方式:DOS命令窗口 注意事项:目前不 ...
- node05
1.ejs: const ejs = require('ejs') ejs.renderFile('./template/a.ejs', {name:'cc'}, function (err, dat ...
- Redis安装及使用
1.我们可以通过在官网下载tar.gz的安装包,或者通过wget的方式下载 进入要下载到的文件夹: wget http://download.redis.io/releases/redis-4.0.1 ...
- LoadRunner(二)——性能测试过程概述
参考学习感谢:<精通软件性能测试与LoadRunner实战> 性能测试过程概述 2.1 性能测试的基本过程 2.2 性能测试需求分析 2.3 性能测试计划 2.4 性能测试用例 2.5 测 ...
