那些动不动就说单机并发连接数几万并发的到底是在说什么

@wangshaochun 的个人主页 - CNode技术社区
http://www.codeday.top/
注册时间 1 年前
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
服务器赞助商为
,存储赞助商为
,由提供应用性能服务。
新手搭建 Node.js 服务器,推荐使用无需备案的单机千万并发连接实战
  c10k,c100k,c1000k等问题大家都已经司空见惯,那么10m(千万)并发连接呢?今天就来一起挑战一下吧。
  10m连接,大家的个人电脑肯定无法满足要求,如果不是在大公司任职,弄个实际的物理机对大家是个奢望。那么怎么办?我也面临同样问题。
  现在的云计算这么发达,还可以按小时计费,一小时的费用也就几元,那就试试云计算产品吧。小编先是在阿里云上测试,但阿里云的按需付费主机配置不高,费了不少时间,最终只跑到了3m个连接。阿里云的不行,是主机的配置问题还是程序的问题呢?为了得到最终的结论,我尝试了其他的云产品,最终ucloud的云主机给了我兴奋的答案。
  首先创建ucloud主机
ucloud主机(一共需要两台,一台作为服务器,一台作为客户端):
. 选择主机管理的创建主机
. 选择ubuntu14.4 64bit (小编的测试程序是c++11,需要高版本的g++)
. 机型标准版
. 网络增强一定要选择开启 (千万连接是网络IO密集型,网络当然要强大型)
. cpu 16核 内存64G 数据盘0
. 下一步中的网络类型选择基础网络即可,创建主机之后,需要购买弹性ip,并且绑定到主机
. 价格:小编实验时,上述的配置,一台仅需7.2元一小时,两台不到15元
  做实验的时候,大家记得要眼疾手快哦,一小时十几元,获得了自己想要的结果就赶紧释放主机哈
  10m并发连接对系统是个挑战,需要调整相关的参数
sysctl -w fs.file-max= #系统允许的文件描述符数量10m
sysctl -w net.ipv4.tcp_rmem=1024 #每个tcp连接的读取缓冲区1k,一个连接1k,10m只需要10G
sysctl -w net.ipv4.tcp_wmem=1024 #每个tcp连接的写入缓冲区1k
echo '* soft nofile ; && /etc/security/limits.conf #用户单进程的最大文件数,用户登录时生效
echo '* hard nofile ; && /etc/security/limits.conf #用户单进程的最大文件数,用户登录时生效
ulimit -n 1048576 #用户单进程的最大文件数 当前会话生效
部署测试程序
  下面可以开始部署我们的测试程序了
apt-get update
apt-get install -y screen git make g++ nload iptraf
git clone /yedf/handy
cd examples
运行测试程序
  选取一台主机S作为服务器,运行命令
python 1kw-svr.py
  该脚本会以job方式启动十个进程,每个进程监听100个端口,一共监听了的1000个端口,每个服务器简单的echo收到的数据
  选取另一台主机C作为客户端,在screen里运行命令(需要填写S的内网ip)
python 1kw-cli.py ip-S 0 300
  该脚本会以job启动1000个进程,每个进程会产生1w(0)个连接,连接S的端口。最后的300表示每300秒往服务器发送一个数据包
  每个进程都会几秒输出一条信息,1000个进程会造成刷屏,表面刷屏数据导致的外网网络流量可能影响ssh,一般观察一小段时间后,小编就detach screen了
  10m连接的创建需要花费不少时间的,如果疯狂的创建连接,导致的结果是很多连接都不成功,于是脚本每启动一个进程,睡眠0.5s,让连接的创建速度保持在2w/s,因此大约需要10分钟的时间才能把所有连接都创建成功。
  然后,10m连接的建立就不需要更多的步骤啦,使用命令
watch ss -s
  我们就可以开始观察连接的创建进度啦,看着连接渐渐的往上走,超过10w,100w是不是很有成就感。
  还可以通过iptraf,nload等工具来查看系统的网络情况
  系统在上面千万连接运行中,并没有多少的负载,当然啦,一部分负载跑到底层的hypervisor去了
  小编实验的机器上内存占用大约40G,平均一个连接前后一共用了4k,不多不多
  网络发包数量是3w/s,收包数量是6w/s,这是为什么呢?熟悉tcp协议的同学可能已经知道了,C发送数据,S回应数据并带了ACK,C需要对S发送的数据ACK
  大家还可以跑两个发送大量数据的程序,例如
./1kw-cli ip-S 000 0 1024
  这个程序会打开10000个连接,不断的与S进行数据收发,数据大小为1024Byte
  小编这里启动了两个这样的程序,网卡流量立刻就超过了500MBit/s
  写到这里,顺便给出我测是的ucloud主机的性能参数吧:
  网卡流量最多可以到1.2GBit/s,并非所有时间都到了这么高,并不稳定,一般在800M-1.2G之间波动
  tcp收包发包的最高qps是12w/s,多了就上不去了
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'查看: 5368|回复: 70
某公司使用的网络底层代码,高并发(单机支持10万)
在线时间 小时
已经在此代码基础上成功做了几款游戏,此网络底层支持大并发、横向扩展(经测试,网关服务同时连接大于10万)代码中文注释详尽,大家如果想做高并发的话可以参考一下。2 `. _8 r/ w) a
(602.74 KB, 下载次数: 60, 售价: 100 金币)
11:11 上传
点击文件名下载附件
售价: 100 金币 &下载积分: 钻石 -1 , 资历 +1
8 i( e5 `2 z" n1 l9 v
网上有下载的,还卖100&
在线时间 小时
逗B,單機最大 6萬個端口,你TM哪來的10萬,更逗的是,單機 IO瓶頸,我做了10年遊戲,我見過最厲害的不過4萬,你10萬,傻逼
在线时间 小时
什么系统? 什么语言? 很诱惑人,坐等大仙验证。
在线时间 小时
坐等大仙验证
在线时间 小时
c++代码&&各位高手看看
(88.07 KB, 下载次数: 49)
14:32 上传
在线时间 小时
买不起,能便宜点么
在线时间 小时
买不起,能便宜点么
在线时间 小时
我就不下了~~纯支持,lz下次再发点更好的
在线时间 小时
本帖最后由 so-ker1235 于
17:00 编辑
! ^" J* w! Q' v, y( @6 z
从时间戳上看是07、08年的代码,好老哦,而且杀软还报毒7 @7 Q4 K3 K6 [: p
v.JPG (35.67 KB, 下载次数: 0)
16:55 上传
唉,楼主你要了我100金币和一颗钻,还顺带塞我个木马吗?
在线时间 小时
纯粹的源码竟然报毒,没有任何执行文件,你杀毒软件应该换了,
在线时间 小时
升级下病毒库,再查还是有木马啊
v1.JPG (86.89 KB, 下载次数: 0)
17:18 上传
Powered by}

我要回帖

更多关于 tomcat 单机并发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信