1、tomcat常用配置参数
<Connector port=“8080" protocol=“org.apache.coyote.http11.Http11NioProtocol”
maxThreads=“600”
minSpareThreads=“100”
maxSpareThreads=“500”
acceptCount=“700”
connectionTimeout=“20000”
redirectPort=“8443” />
参数说明:
protocol=“org.apache.coyote.http11.Http11NioProtocol” 使用java的异步io护理技术,no blocking IO
maxThreads=“600" 表示最多同时处理600个连接最大线程数
minSpareThreads=“100" 表示即使没有人使用也开这么多空线程等待,初始化时创建的线程数
maxSpareThreads=“500" 表示如果最多可以空500个线程,例如某时刻有505人访问,之后没有人访问了,则tomcat不会保留505个空线程,而是关闭505个空的。 一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
acceptCount=“700” 指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
enableLookups:是否反查域名,取值为:true或false。为了提高处理能力,应设置为false
tomcat6开始不用的两个参数:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
2、相关参数配置
配置、测试参考该文章:https://mp.weixin.qq.com/s/qr7EQhJAG-mhpzpk23JmDw
(1) 禁用AJP连接,减少资源浪费
将该配置注释掉,然后重启tomcat,刷新tomcat管理页面后,AJP配置消失。
(2)使用执行器(线程池),提高性能
保存退出,重启tomcat,查看管理页面效果
(3)tomcat的三种运行模式
bio: 默认的模式,性能非常低下,没有经过任何优化处理和支持
nio: (new I/O),是Java SE 1.4及后续版本提供的一种新的 I/O操作方式(即java.nio包及其子包),java nio是一个基于缓冲区,并能提供非阻塞I/O操作的java API ,因此nio也被看成是 non-blocking I/O的缩写,它拥有比传统I/O操作(bio)更好的并发运行性能
apr: 安装起来最困难,不过在tomcat8中有最新的nio2,速度更快,建议使用nio2,配置如下
(4)关于测试
以上是我个人在本地虚拟机中做的测试,虚拟机的配置为处理器1核内存1G,可以看出请求数大于或等于500的时候平均响应时间很慢,当并发请求数达到2000时,出现了部分请求异常。大家可以通过设置不同的参数,进行反复测试,观察测试结果的变化。
4、JMeter的结果树和聚合报告说明
(1) 结果树
Thread Name: 线程组名称
Sample Start: 启动开始时间
Load time: 加载时长,整个请求的消耗时间,从发送到接收完成全程消耗的时间
Latency: 等待时长,不常用,表示从请求发送到刚开始接收响应时的时间
Size in bytes: 发送的数据的总大小
Headers size in bytes: 发送头的大小
Body size in bytes: 发送数据的其余部分的大小
Sample Count: 发送请求数统计
Error Count: 交互错误统计
Response code: 返回码
Response message: 返回信息
Response headers: 返回的头部信息
HTTPSampleResult:附加的请求信息
(2) 聚合报告
JMeter大家可以设置成中文的,以下是英文的版的说明:
Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值
Samples:表示你这次测试中一共发出了多少个请求
Average:平均响应时间,默认情况下是单个 Request 的平均响应时间
Median:中位数,也就是 50% 用户的响应时间
90% Line:90% 用户的响应时间
95% Line:95% 用户的响应时间
99% Line:99% 用户的响应时间
Min:最小响应时间
Max:最大响应时间
Error%:测试中出现错误的请求的数量/请求的总数
Throughput:吞吐量,默认情况下表示每秒完成的请求数,Request per Second
KB/Sec:每秒从服务器端接收到的数据量