当前位置: 首页 > news >正文

建设一个收入支出持平的网站/hao123主页

建设一个收入支出持平的网站,hao123主页,东莞建设局网站,徐州网站建设 徐州网站推广本文由作者郑银燕授权网易云社区发布。本文是我在测试过程中的记录,实现了单台测试机发起最大的websocket长连接数。在一台测试机上,连接到一个远程服务时的本地端口是有限的。根据TCP/IP协议,由于端口是16位整数,也就只能是0到 6…

本文由作者郑银燕授权网易云社区发布。


本文是我在测试过程中的记录,实现了单台测试机发起最大的websocket长连接数。在一台测试机上,连接到一个远程服务时的本地端口是有限的。根据TCP/IP协议,由于端口是16位整数,也就只能是0到 65535,而0到1023是预留端口,所以能分配的端口只是1024到65534,也就是64511个。也就是说,一台机器一个IP只能创建六万多个websocket长连接。

一、客户端参数调优


本文采用的测试机分别为黑mac系统和linux系统(由于黑mac机器本身性能问题,最大只能达到2万连接,于是换用linux)。下面先以mac系统为例,阐述下客户端参数调优,linux系统类似,这里不做阐述。

1、修改全局限制,系统默认的最大连接数限制


命令:sysctl kern.maxfiles

8166f86e-99ce-4036-8943-50c36e6b149e


说明:全局限制,也就是系统默认的最大连接数限制是12288

修改大小: sudo sysctl -w kern.maxfiles=1048600

f85653c9-6850-4e3e-aac9-550b2a9f61a5



说明:设置系统最大连接数从12288到1048600

2、测试脚本是一个进程,开启上万个长连接,还需要修改单个进程的最大连接数。

命令:sysctl kern.maxfilesperproc

67d72003-676e-49f3-a026-5cee4f98237e


说明:单个进程默认最大连接数限制是10240

修改大小:sudo sysctl -w kern.maxfilesperproc=1048576

864420c8-9e9a-4739-a8af-8963667c443c


说明:设置进程连接数限制,进程的最大连接数要小于等于全局连接数

3、由于客户端与服务端需要建立大量的socket,所以我们需要调速一下最大文件描述符。


命令:ulimit -n

c0e05ed2-8b73-4382-b7e9-d5a3145fe632


说明:“ulimit -n”命令显示当前shell能打开的最大文件数,默认值:256,该值总是小于kern.maxfilesperproc的值,因为一个shell就是一个进程。

修改大小:ulimit n 1048576

说明:设置当前shell能打开的最大文件数为1048576,该值不能大于kern.maxfilesperproc,否则会提示设置失败。

4、由于系统默认参数,自动分配的端口数有限,所以我们需要更改客户端ip端口号的参数


 命令:sysctl net.inet.ip.portrange,查询得到的系统默认的端口号分配如下:

f143fb2f-be2d-4d25-a392-824ce89879d7


将可分配的首个端口号设置为1024

修改大小:sudo sysctl net.inet.ip.portrange.first=1024



61c738a3-47ea-44b7-ae12-b94d9732077c

5、按以上的方式设置参数有个问题,当系统重启后,这些参数又恢复成了默认值,解决办法就是把参数写到/etc/sysctl.conf文件中,但是,默认这个文件是不存在的,所以首先就要创建它:


sudo touch /etc/sysctl.conf

然后把参数写到文件里

kern.maxfiles=1048600

kern.maxfilesperproc=1048576

net.inet.ip.portrange.first=1024

net.inet.ip.portrange.last=65535

重启系统,查看结果,显示成功。

至于ulimit -n的值,可以把ulimit -n 1048576 写到.bashrc中实现自动修改。


二、测试脚本


客户端脚本采用nodejs编写,之所以不采用jmeter的方式,是因为jmeter每个连接都是线程的方式,而单台测试机最好保持开启1000个以内的线程,否则机器容易崩溃。


测试脚本如下:

var cwd = process.cwd();var WebSocketClient = require('websocket').client;var size = 10000;var host = 'example.com:80';var port = 443;var authInterval = 10;var index = 0;setInterval(function(){		if(index < size){uid = index;cid = index;init(uid, cid);index++;}
},authInterval);console.log('begin...');
init = function(uid, cid){	var client = new WebSocketClient();client.connect('ws://XX.XX.XX.XX:XXXX/ws?token='+index,"","http://example.com:80");client.on('connectFailed', function(error) {		console.log('Connect Error: ' + error.toString());});client.on('connect', function(connection) {		console.log(index+' Connected');connection.on('error', function(error) {			console.log("Connection Error: " + error.toString());});connection.on('close', function(error) {			console.log(error + ';  Connection Closed');            //client.close();reconnect();});connection.on('message', function(message) {});});
};function timeLogout(){	return setTimeout(function (){logout(uid);}, StartTime);
}


三、测试结果


在相应的目录下输入命令node websocket.js,即可建立websocket连接。由于机器性能问题,连接数达到2w左右,就无法建立新的连接了。后面将机器改成云主机,可以达到6万的连接数。

6204f907-9624-4e0a-adf1-b292ad9acca5

四、后续展望

我的测试目标不是实现单台6万的连接数。我的目标是可以达到百万级稳定的长连接,并且可以向websocket服务器收发信息,计算每个消息从服务器发送到客户端接收的平均耗时时间,以及查看建立百万级连接,服务器的内存和cpu的使用情况。最终限制于机器的性能,暂时还没做到。并且业务需求繁忙,这个测试就暂时告一段落了。后续想要通过使用虚拟IP的方式来实现百万级连接,比如增加了18个IP地址,这样就可以产生18 * 60000 = 1080000个连接。或者借用更多的机器数,每台机器维持6万连接。


免费领取验证码、内容安全、短信发送、直播点播体验包及云服务器等套餐

更多网易技术、产品、运营经验分享请访问网易云社区。



相关文章:
【推荐】 考拉消息中心消息盒子处理重构(策略模式)
【推荐】 windows系统下npm升级的正确姿势以及原理
【推荐】 网易云易盾与A10 Networks达成战略合作 携手打造抗DDoS攻击的解决方案

转载于:https://www.cnblogs.com/zyfd/p/10113900.html

http://www.lbrq.cn/news/955045.html

相关文章:

  • 做网站订金为什么需要交那么多/在线推广企业网站的方法有
  • 南阳市做网站/友情链接交易网
  • 枞阳县建设局网站/手机百度账号登录个人中心
  • thinkphp可以做网站吗/长沙seo网络优化
  • 上海网站设计服务商/网店运营培训
  • 网站可以自己做吗/百度销售系统登录
  • 长沙百度开户/优化服务内容
  • 兴义市建设局网站/关键词歌词含义
  • 360云盘做 网站图片服务器/地产渠道12种拓客方式
  • 建设了网站怎么管理系统/广东省各城市疫情搜索高峰进度
  • 广东官方网站建设/googleplay安卓版下载
  • 做电子手环网站需求分析/关键词搜索引擎工具
  • 上虞网站建设/营销服务机构
  • 二手房交易网站排行/正规考证培训机构
  • 桂林北站电话客服中心/外链屏蔽逐步解除
  • 北京建设网站/seo网站关键词优化费用
  • 网站建设 招聘需求/百度推广客服电话24小时
  • 重庆网站搭建方案/全国病毒感染最新消息
  • 35云主机做网站对视频大小限制/沈阳seo技术
  • 大丰有没有做网站/适合小学生的新闻事件
  • 哪些网站做科技专题/怎么开发一个网站
  • 邯郸做网站找哪家好/最好用的手机优化软件
  • 如何制作wordpress模板下载/百度关键词seo优化
  • 云服务器品牌前十大排名/seo优化查询
  • 美国哪个网站做diy电脑版/网站推广软件免费
  • 建站教程的特点/开鲁seo服务
  • 中国制造网官网首页/昆明seo建站
  • 北京网站建设价格/手机端竞价恶意点击
  • 高州网站建设/seo推广软件代理
  • 建设团购网站/微信附近人推广引流
  • An End-to-End Attention-Based Approach for Learning on Graphs NC 2025
  • HTTP与HTTPS技术细节及TLS密钥交换与证书校验全流程
  • 服装公司生产管理系统,如何实战提升生产效率?
  • 6-大语言模型—预训练:数据处理
  • 【C++基础】--多态
  • Node.js链接MySql