几周前的一个周五,帮朋友忙,须要给个软件作压力测试,花了一晚的时间学习了下,而后就赶鸭子上架去作这个事了。python
想着有时间把学习过程整理下,结果忘掉了。mysql
今天欢哥问到我上次压测用了什么软件,才想起这个事,暂且整理下吧。ios
一番调研后,先筛选了4个软件:Loadrunner、Jmeter、Apache Bench、SysBench。nginx
首先是作技术选型,目前主流的压力测试软件就是Loadrunner、Jmeter。web
其余经常使用于性能测试的软件还有Apache Bench、SysBench。sql
Loadrunner商用,有破解版,可是学习成本过高。数据库
Jmeter是基于jdk的,开源免费,学习简单,可是须要配合badboy或者代理方式录制脚本,比较麻烦。apache
Apache Bench 看名字就知道是阿帕奇家族的了,俗称的ab压测工具。支持apache、nginx、tomcat、IIS等服务器。安装、使用都比较简单。编程
SysBench相似Apache Bench,可是只能在Linux上安装。api
须要测试的web应用主要是压测其登陆、注册、列表打开这些场景,没有GUI界面、脚本录制功能的两个Bench工具首先放弃了。
Loadrunner太大,还要破解,学习成本过高也放弃了。
最后选中Jmeter,找了些资料,还去哔哩哔哩找了个视频现学。
在哔哩哔哩学习Jmeter的时候,发现了黑羽压测,感受比较适合个人场景。
黑羽压测(Hyload ),基于Python3,录制脚本简单,能够远程监控服务器并秒回图形,不须要导出top、sar、vmstat这些资源监控命令的结果手动绘制图形了。
若是并发很是大,须要多个压力机测试,Hyload要购买pro版,不过通常一两万并发普通版本就够了。
花了几个小时把黑羽实战了下,次日就现学现卖。
结果到了现场傻眼,都是内网,并且是堡垒机,一运行就是黑羽压测就是黑屏,也没报什么错误出来。
估计是win7版本过低了。
想一想直接去下了Python3.7来安装,而后运行下,看看到底报什么错,而后运行下。
果真有报错提示了,结果提示没有win7 servpack1。
又下载了servpack1补丁包,仍是不能运行。
又按照提示下了两个api-win的补丁。
早上9点多去的,搞环境一直搞到了下午三点,才把环境运行起来。
黑羽压测方便的一点是浏览器f12查看network,save har能够直接导入到hyload的ide中,稍微改下脚本就行了。
而且贴心的有tps qps的压力图,还能够直接远程部署监控脚本到被测服务器上,采集信息后出具cpu io的监控图表,对于出具性能测试报告比较方便。
官网教学文档:http://www.python3.vip/doc/tutorial/hyload/01/。
哔哩哔哩也有学习视,连接不放了,本身搜下。
压力监测图以下:
服务器监测图以下:
实际上真正的性能不是测试出来的,而是设计出来的,可是在此不展开。
一、性能需求收集、分析
二、制定测试指标,编写测试计划、测试用例
三、测试工具选型,此步骤与2可调换
四、执行测试,观察测试指标
五、达不到指定测试指标则修改代码或提高服务器性能再次压测
六、出具测试报告
服务端指标:
吞吐量:系统单位时间内可处理业务量 并发数:在保证响应时间要求下的可同时处理的最大请求数 (隐含条件) 最高负载下,服务器资源占用率应在80%如下
客户端指标:
响应时间:从用户发起请求到完成所花费的时间 在线用户数:必定时间内对系统产生访问的用户数。
一些术语:
qps , 每秒查询请求数 tps , 每秒事物处理数/每秒接收响应数 eps, 每秒错误响应数 tops, 每秒超时请求个数(这个是黑羽压测单独拎出来的一个指标,有时候看eps就够了) avgresptime, 每秒平均响应时长 Throughput,吞吐量,即系统在单位时间内处理请求的数量。
使用压测工具压测时,不光观察应用的状况,还要随时观察服务器资源,如
一、CPU 占用率 二、内存使用率 三、磁盘访问量 四、网络吞吐量
观察这些资源,在Linux下可以使用top、iostat、vmstat、sar等工具。
错误:
一、把吞吐量当作并发 二、把客户端说并发 三、把在线用户说成并发
正解:
一、吞吐量是按时段来考虑的,并发数是按时刻来考虑的 二、响应时间越短,并发数与TPS差距越大 三、并发数 = tps / avgresptime
授人以鱼不如授人以渔,把黑羽压测这个测试工具怎么用,跟性能测试报告怎么写都教给了龙哥。
嗯,仍是颇有成就感的。
我开玩笑跟他说,之后他也能够去他公司其余部门输出性能压测这项技能了。
欢迎关注个人公众号:姚毛毛的博客
这里有个人编程生涯感悟与总结,有Java、Linux、Oracle、mysql的相关技术,有工做中进行的架构设计实践和读书理论,有JVM、Linux、数据库的性能调优,有……
有技术,有情怀,有温度