博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
探讨.net Socket支持在线连接数量
阅读量:7121 次
发布时间:2019-06-28

本文共 954 字,大约阅读时间需要 3 分钟。

发现不少同学在用.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在线,而每个客户十来秒才产生一个交互;那这种硬件可行性还是很好评估的;但如果业务上是每个客户每秒都要交互大量业务数据,那从硬件资源和带宽上就比较难以规划,可能要做一些可行性测试才能评估出来。

转载地址:http://jtiel.baihongyu.com/

你可能感兴趣的文章
解析淘宝商城缘何更名“天猫”
查看>>
Struts2之checkboxlist 设置默认值和结果回显
查看>>
Spring 事务 状态信息的创建、回滚、清理、提交
查看>>
0927_C/C++笔试题_10:16道c语言面试例子【2】
查看>>
IIS Express 启用目录浏览
查看>>
当才华还配不上野心,就静下来学习
查看>>
编写高效的C++程序方法之使用对象池
查看>>
MFC子窗口和父窗口(SetParent,SetOwner)
查看>>
QT5(一):HelloWord
查看>>
Eclipse快捷键大全(同样适用基于Eclipse开发的IDE)
查看>>
JAVASE总复习
查看>>
windows应用迁移到linux下
查看>>
linux网卡研究
查看>>
考虑用静态工厂方法代替构造器
查看>>
常见排序算法:冒泡排序
查看>>
我的友情链接
查看>>
使用ZooKeeper
查看>>
Jenkins+git 实现代码自动发布
查看>>
【转】frame与bounds的区别比较
查看>>
从今天开始写博文
查看>>