Swoole - webSocket消息服务系统压力测试篇
编程的内核是数学,而测试的本质是计算,专业名词叫容量预估,而测试的大体就是用程序模拟程序,检测程序的正确性,有两个点需要注意,QPS最佳
编程的内核是数学,而测试的本质是计算,专业名词叫容量预估,而测试的大体就是用程序模拟程序,检测程序的正确性,有两个点需要注意,QPS最佳值和系统接收最大值,根据测试数据的反馈,针对测试的现象和反映进行优化。
在所有的开发准备就绪的时候,开始准备和上线有关的事情:测试和服务部署,测试要注意代码的逻辑严谨、代码运行的正确,服务稳定,所有的一切都需要用数据做指标,所有的计算机编程归根结底都是数学。
(资料图)
jmeter自带的thread group非常简单。 一个thread 代表一个vuser,那么我们如果需要多少用户并发,设置多少线程数即可。ramp-up period, 本人理解是多少时间从0个 vuser 上升到您指定的vusers数。从这些参数可以看,非常简单。但不能设置测试的时间,这一点不是特别善解人意。不过还好我们有jmeter plugins, 带的thread group 添加了这个功能。
Number of Threads(users) //并发线程(用户)数Loop Count //重复执行次数
右键单击左侧导航树中的 Test Plan,选择 Add > Threads(Users) > Thread Group ,右键单击 Thread Group,选择 Add > Sampler,可看到以下新增的采样器选项,具体说明如下。
WebSocket Open Connection// 建立一个 WebSocket 连接WebSocket Ping/Pong // 控制帧,发送 ping 并接收 pongWebSocket request-response Sampler //发送和接收文本或二进制 WebSocket 帧WebSocket Single Write Sampler// 发送文本或二进制 WebSocket 帧WebSocket Single Read Sampler// 接收文本或二进制 WebSocket 帧WebSocket Close // 关闭 Websocket 连接
添加聚合报告,执行测试,结果如下图。
1.随机读取用户表里1000个用户,进行压力测试
select user_id from user where user_status = 1ORDER BY RAND() limit 1000;
2.构造测试需要的数据(10w条为例)
drop procedure idata;delimiter ;;create procedure idata()begin declare i int; set i=1; while(i<=100000 )do insert into t2 values(i, i, i); set i=i+1; end while;end;;delimiter ;call idata();
3.查询最大链接数命令
show variables like "%max_connections%";
4.查询链接线程的状态命令
show processlist;
5.检测服务器Mysql链接状态的命令
netstat -ant|grep ESTABLISHED|grep 3306 | wc -l
请求接口的Demo,主要的思考点在于用户访问具有随机性,模拟数据时尽量做到接近真实场景,代码如下:
$str = "62210,45783,36209,146502,24599,168338,166511,1917...";$uidTestArr = explode(",",$str);foreach ($uidTestArr as $uid){ if(isset($uid) && intval($uid) > 0){ $json = file_get_contents("http://open.stark.com/login/gettoken?uid=". $uid); $json = json_decode($json,true); $temp[] = [ "uid" => $uid , "token" => $json["token"] ]; }}$index = rand(0,count($temp) - 1);$randData = $temp[$index];//随机执行结果/**Array( [uid] => 166511 [token] => f46540f11a40afeb9998cbe76661ec8234a87054)*/
Crontab的测试代码Demo,先灌入测试数据,考虑的是Crontab的实际吞吐能力,优化计划任务的执行间隔,使用Curl和shell_exec实现,执行结果,返回数据 {"code":200,"result":[],"msg":"OK"}
$str = "62210,45783,36209,146502,24599,168338,166511,1917,135799,8326...";//去掉可能存在的换行和空格$str = str_replace(array(PHP_EOL, " " ,"",$str));$testUsers = explode(",",$str);for ($i=0;$i<10000;$i++){ $index = rand(0,99); $uid = $testUsers[$index]; $msg = "{\"rid\":225,\"uid\":".$uid.",\"top_rid\":225,\"module\":\"novel_chapter\",\"module_name\":\"1022 last dance \u7b2c13\u7ae0\",\"module_id\":1019712,\"module_nid\":163961,\"comment_uid\":268,\"comment_nickname\":\"\u6d4b\u8bd5\u5c0f\u5b9d\u8d1d\",\"content\":\"\u4f60\u597d\u554a\",\"gift_id\":0,\"gift_name\":\"\",\"gift_number\":0}"; $url = "http://msgdev.stark.com/api/comment/message"; $json = shell_exec( "curl -d "uid={$uid}&msg={$msg}" {$url} " ); echo "i:".$i.",json:".$json.PHP_EOL;}
在临时执行或停止计划任务,在执行前加入时间毫秒的时间戳,可以打印代码进行耗时计算,代码如下:
//返回当前的毫秒时间戳function msectime() { $stamptime = microtime(); $arr = explode(" ",$stamptime ); $msectime = sprintf("%.0f", (floatval($arr[0]) + floatval($arr[1])) * 1000); return $msectime;}
第5点特殊说明有一点事特别需要强调的,不用被所谓的100w或者1000w流量的标题吓倒,比如1000w/h的访问量,Qps就变成了27777/s,每个用户请求的热门接口30个,这才是测试的真相,关键地方使用内存数据库进行加速,障碍就迎刃而解了:
10000000 / 60 / 60 / 30 = 925/s
关键词:
编程的内核是数学,而测试的本质是计算,专业名词叫容量预估,而测试的大体就是用程序模拟程序,检测程序的正确性,有两个点需要注意,QPS最佳
1、不买高铁票,不能先上车再补票。高铁实行实名制登记验证,乘客只有票、证、人一致才能上车。2、另外,高铁一般不允许补票。
1、路线时间2、1 游览云南通常有两条路线。3、(1)昆明——大理——丽江——香格里拉(推荐风景较多的云南最必不可少的旅
1、一般来说液相的操作不会导致保留时间的变化。2、首先你得保证流动相是同一个。3、如果换过流回动相就答没有可比性了,因为配制过程会有误差
1、《X特工》是2015年上映的剧情片。2、由PeterO FallonUtaBriesewitz 执导。本
1、接触过梅毒的患者不会轻易被感染。2、梅毒是由梅毒螺旋体感染引起的慢性传染病,主要通过性接触、母婴传播和血液传播。3、
截至2023年3月10日收盘,华盛昌(002980)报收于33 34元,上涨0 3%,换手率3 49%,成交量1 16万手,成交额3861 6万元。
1、LG32LV2600-CC,液晶电视。2、32寸屏幕,输出功率为20W。本文到此结束,希望对大家有所帮助。
台媒:台军已联系大陆协寻失联士兵!可能漂到厦门!!今天的关注度非常高,直接上了热搜榜,那么具体的是什么情况呢,大家可以一
夏季的高温天气我们感同身受,但眼下刚3月,我们却提前感受到了这股由内而外的“热浪奔袭”。史无前例的最强购车季,补贴幅度非常惊人,相比以
1、《战鼓啪啪嘭》是一款休闲类游戏。2、是新型游戏登陆手机平台。3、游戏大小为350KB。本文到此结束,希望对大家有所帮
3月10日消息,360数科发布2022年第四季度python及全年业绩,2022年第四季度净收入总额为39 07亿元,同比下降11 6%;应占净利润为8 72亿
直播吧3月9日讯北京时间3月9日晚上20时,U20国青队将在U20亚洲杯最后一场小组赛对阵吉尔吉斯斯坦队。赛前,记者马德兴发文对于吉尔吉斯斯坦队
回答:永康教师进修学校(金马路501号)9号楼一楼。永康市二〇二三年上半年普通话水平测试报名通知各中小学、幼儿园、社会人员:2023年上半年永
1、十年辉煌,不悔青春,不变信仰,重温十年魔兽难忘记忆,同9000万玩家再度谱写艾泽拉斯光辉事迹!《暴走魔兽团》是一款颠
1、瓷砖粘贴一周后一定要用美观的缝纫材料进行美观的缝纫。因为瓷砖下面的水泥胶没有完全干透的时候,容易使瓷砖空鼓,也容易使
中央气象台发布寒潮蓝色预警IV级 一般中央气象台3月10日06时发布寒潮蓝色预警:受寒潮影响,预计,3月10日08时至3
不能,山楂的功效可以帮助人消化和开胃。减肥的效果不怎么明显。减肥其实最正确的办法就是合理的饮食。多运动。有一个良好的心态
1、去百度文库,查看完整内容>内容来自用户:仓匀酌定贺篇一:幼儿园自我介绍模板嗨!大家好。2、我是甘宇宸,今年3岁了
中科云网(002306):关于召开2023年第一次临时股东大会,审议10项议案3月9日,中科云网公告显示,公司拟于2023年3月27日召开第一次临时股东大会,本