共计 1728 个字符,预计需要花费 5 分钟才能阅读完成。
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器,等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能
JMeter 的作用
能够对 HTTP 和 FTP 服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过 JDBC)。
完全的可移植性和 100% 纯 java。
完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
精心的 GUI 设计允许快速操作和更精确的计时。
缓存和离线分析 / 回放测试结果。
下载地址:http://jmeter.apache.org/download_jmeter.cgi
JMeter 安装使用
将下载好的压缩包在 windows 中解压(需要先安装 JDK),解压后进入到 bin 目录双击 jmeter.bat,等待启动
设置中文
创建测试
添加线程组,使用线程模拟用户的并发
1000 个线程循环 10 次,tomcat 会收到 10000 个请求
添加并设置 http 请求
添加监控
启动测试
查看结果
标签:说明是请求类型,如 Http,FTP 等请求。样本总数:也就是图形报表中的样本数目,总共发送到服务器的样本数目。平均值:也就是图形报表中的平均值,是总运行时间除以发送到服务器的请求数。居中的数值:也就是图形报表中的中间值,是代表时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。90%&95%&99%:有多少请求的响应时间比给出的数值还要小。最小:是代表时间的数字, 是服务器响应的最短时间。最大: 是代表时间的数字, 是服务器响应的最长时间。异常 %: 请求的错误百分比。吞吐量: 也就是图形报表中的吞吐量,这里是服务器每单位时间处理的请求数,注意查看是秒或是分钟。发送 / 接收 KB/sec: 是每秒钟发送 / 接收的字节数。(时间的单位为 ms)
通过上面测试可以看出,tomcat 在不做任何调整时,吞吐量为 587 次 / 秒。这个吞吐量跟接口的业务逻辑关系很大,如果业务逻辑复杂,需要比较长时间计算的,可能吞吐量只有几十次 / 秒,我这里测试的时候没有添加任务业务逻辑,才会出现吞吐量为 587 次 / 秒的情况。这里的吞吐量最好是经过多次测试取平均值,因为单次测试具有一定的随机性
调整 tomcat 线程池
[root@zutuanxue bin]# vim /opt/tomcat1/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" maxThreads="1000" minSpareThreads="200" prestartminSpareThreads="true" connectionTimeout="20000" redirectPort="8443" />
# 调整最大线程数为 1000,最小为 200,这个线程的数量要反复调整,然后对比测试结果,找出一个适合自己的值
调整队列
[root@zutuanxue bin]# vim /opt/tomcat1/conf/server.xml
<Connector port="8080" protocol="HTTP/1.1" maxThreads="1000" minSpareThreads="200" prestartminSpareThreads="true" maxQueueSize="100" connectionTimeout="20000" redirectPort="8443" />
默认情况下,请求发送到 tomcat,如果 tomcat 正忙,那么该请求会一直等待。这样虽然可以保证每个请求都能请求到,但是请求时间就会边长。有些时候,我们也不一定要求请求一定等待,可以设置最大等待队列大小,如果超过就不等待了。这样虽然有些请求是失败的,但是请求时间会虽短。典型的是 12306。
参数介绍可以去官网查看:https://tomcat.apache.org/tomcat-9.0-doc/config/executor.html