最近公司做了个直播的项⽬,需要⽤到Websocket进⾏通信,因⽽需要对socket最⼤连接数及稳定性进⾏测试。当初得到这⼀需求的时候,唯⼀想到的就是jmeter,从百度下载相应的socket依赖jar包,开始研究(毕竟第⼀次做这⽅⾯的测试),担⼼单台压⼒源不够⽤,⼜整了个分布式,不过最终发现Jmeter并不适合测试Socket的最⼤连接数,于是调整了思路,寻找其他⽅法,功夫不费有⼼⼈,最后发下了⼀款不错的socket测试⼩⼯具()是⼀个.exe⽂件,使⽤该⼯具可以很容易的实现socket稳定性测试,连接数测试就有点⿇烦了,因为我们的Websocket需要传递⼀些参数,这就涉及到对参数进⾏参数化,此时想到之前做⾃动化⽤到的⼀个⼯具叫autoit3,通过autoit3调⽤该.exe程序来实现对不同参数的输⼊,需要提前准备好数据⽂件:具体代码如下:
Run(\"E:\\webSocket\\WebSocket_test\\TradePhoneClient.exe\")Sleep(5000)
WinWait(\"Form1\")
$sheet = Gettestsheet(\"E:\\webSocket\\WebSocket_test\\student_uuid20000_data.csv\",1)For $i= 1 TO 801 Step 1
Dim $stu_uid = $sheet.Cells($i,1).value CreateWebSocketConnect($stu_uid) ;MsgBox(4096, \"读取的⾏:\", $stu_uid)Next
CloseExcel()
Func CreateWebSocketConnect($stu_uid)
ControlSetText(\"Form1\",\"\",\"[CLASS:WindowsForms10.EDIT.app.0.141b42a_r14_ad1;INSTANCE:2]\",\"ws://XXXXXXX.cn/broadcast-rest/echo?uuid=\"&$stu_uid&\"&type=student&encryptId=testrenshu2000\") ControlClick(\"Form1\",\"\",\"[CLASS:WindowsForms10.BUTTON.app.0.141b42a_r14_ad1;INSTANCE:6]\") WinWait(\"[CLASS:#32770]\",\"\",3)
ControlClick(\"[CLASS:#32770]\",\"\",\"Button1\")EndFunc
Func Gettestsheet($path,$sheetindex) ProcessClose(\"EXCEL.EXE\")
$oExcel = ObjCreate(\"Excel.Application\") $oExcel.visible=0
$workbook=$oExcel.WorkBooks.Open($path)
$sheet=$workbook.Worksheets.Item($sheetindex) Return $sheetEndFunc
Func CloseExcel() $workbook.Save(); $oExcel.Quit();
ProcessClose(\"EXCEL.EXE\");退出不了则强制杀死进程EndFunc
总结:webSocket最⼤连接数取决Tomcat最⼤线程数,系统进程数/etc/security/limits.d/90-nproc.conf⽂件,⼀般设置51200
因篇幅问题不能全部显示,请点此查看更多更全内容