如何用Jmeter做压力测试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Jmeter做压力测试相关的知识,希望对你有一定的参考价值。
在“服务器名称或ip”设置127.0.0.1,端口号设置:8080,“方法”设置post,路径设置网站登录的地址,如“/exam/operatorAction”。
登录需传入用户、密码。在“同请求一起发送参数”列表中添加参数。参数值根据web应用设置。如login_user=0001;login_password=1;actFlag=login。
一般网站登录后,在tomcat中生成了session,之后访问其他页面将无需再次登录,前提是浏览器需支持cookie。在jmap中也同样,如要继续访问其他页面,还需做下面关键的设置。
Apache JMeter
是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
参考技术A ApacheBench是Apache bin目录下附带的一个小工具,专门用来做HTTP服务器的Benchmark Testing,这玩意儿可以单独运行,可以到这儿直接下载了用 Apache Bench,下载后,将ab文件copy到 /usr/local/bin 目录即可。工具/原料
ApacheBench
方法/步骤
比较常用的命令,如:
ab -n 请求数 -c 并发数 URL
跑了一个简单的Demo:
usertekiMacBook-Pro:~ zhaoxianlie$ ab -n 200 -c 10 http://127.0.0.1:8793/ This is ApacheBench, Version 2.3 <$Revision: 1554214 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.jinbanz.com/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100 requests Completed 200 requests Finished 200 requests Server Software: Server Hostname: 127.0.0.1 Server Port: 8793 Document Path: / Document Length: 28012 bytes Concurrency Level: 10 Time taken for tests: 6.847 seconds Complete requests: 200 Failed requests: 0 Total transferred: 5665503 bytes html transferred: 5601103 bytes Requests per second: 29.21 [#/sec] (mean) Time per request: 342.343 [ms] (mean) Time per request: 34.234 [ms] (mean, across all concurrent requests) Transfer rate: 808.07 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 1 Processing: 148 338 93.2 335 633 Waiting: 148 337 93.3 335 633 Total: 148 338 93.2 336 634 Percentage of the requests served within a certain time (ms) 50% 336 66% 371 75% 397 80% 413 90% 461 95% 500 98% 568 99% 610 100% 634 (longest request)
3
这其中Requests per second、Time per request算是大家都比较看重的两个评估参数了吧。
不过对于这种压力测试来说,也不能一上来就 -n 1000 -c 10,还是得慢慢来,一开始可以来一个 -n 50 -c 10这样子,逐渐网上增加,取Request per second的最大值作为Http server的性能指标,应该会靠谱一些。
假设我的这个测试服务器RPS峰值是30,那一分钟能扛过来的请求差不多 1800 个,这是单核CPU的情况下。
假设是我厂服务器的配置,24核,开启Node的cluster模式,RPS应该是倍数增加的,明天去公司找台服务压测一把。如果真是这样,那么每秒钟能扛过来的请求差不多 720 个,换算到一个小时,是259.2w个访问请求。
假设服务器配置是nginx+Node,Nginx做负载均衡,proxy_pass对应的upstream配置到4台Node服务器,且每台Node服务器均衡负载,那么,一个小时能扛得动的流量基本是 1kw多一些,满负荷跑一天,2.4亿的流量了。
如何用jmeter测试关联接口
参考技术A 前面介绍过如何用Jmeter做简单的接口测试,此处一些基础的东西不再赘述,不明白的可以去查看前面的教程。
关联接口适用的场景
比如,有一个打开个人中心的接口,必须得要先登录才能够调用该接口,那么就需要关联接口的调用了,即前一个接口的响应数据,作为后一个接口的入参。
1.测试关联接口最重要就是要使用 正则表达式提取器 (注意大小写问题,尤其是响应结果的参数名称的大小写要和这里提取的保持一致,要不然提取不到)
3.因为笔者提取的这几个字段是使用在header里面的,那么就如图填写,如果你们的接口是把这几个参数放在请求体里面的,那么就同理放在http请求里面。
4.如图配置好,还有其他的基础信息,点击运行,就可以成功调用了,如下图。
以上是关于如何用Jmeter做压力测试的主要内容,如果未能解决你的问题,请参考以下文章