1. 准备测试环境
在CentOS系统上确认Tomcat已正常启动(通过systemctl status tomcat查看状态),并部署待测试的Web应用(如将war包放入webapps目录并解压)。测试应用需覆盖核心业务场景(如静态资源访问、动态接口调用),确保测试结果贴合实际使用情况。
2. 选择性能测试工具
根据测试需求选择合适的工具:
3. 执行性能测试
Apache JMeter:
创建测试计划,添加线程组(设置并发用户数、循环次数,如100个用户、循环10次)、HTTP请求(输入Tomcat应用URL,如http://localhost:8080/user/list)、监听器(如“查看结果树”“聚合报告”,用于查看响应时间、吞吐量等指标)。通过Run > Start启动测试,生成详细的性能报告。
Apache Bench (ab):
在终端执行命令,例如测试1000个总请求、10个并发:ab -n 1000 -c 10 http://localhost:8080/。命令执行后,输出结果包含Requests per second(吞吐量,每秒处理的请求数)、Time per request(平均响应时间,单位毫秒)、Percentage of the requests served within a certain time(响应时间分布,如90%的请求在50ms内完成)。
wrk:
使用异步IO模型进行高并发测试,例如模拟12个线程、100个并发连接、持续30秒:wrk -t12 -c100 -d30s http://localhost:8080/。命令输出包含Requests/sec(吞吐量)、Latency(延迟,平均、最大、最小响应时间)等信息,适合评估Tomcat在高并发下的稳定性。
4. 监控系统资源与Tomcat指标
测试过程中需同步监控系统资源(CPU、内存、磁盘I/O)及Tomcat内部指标,定位性能瓶颈:
top(查看CPU、内存占用)、free -m(查看内存使用情况)、df -h(查看磁盘空间)命令,或通过Grafana+Prometheus组合实现可视化监控(需提前安装并配置Prometheus的Tomcat Exporter);catalina.sh添加-Dcom.sun.management.jmxremote等配置,使用jconsole或VisualVM连接),查看线程池状态(活跃线程数、队列长度)、内存使用(堆内存、GC频率)、连接器性能(请求处理时间、吞吐量)等指标。5. 分析测试结果与优化方向
根据测试结果定位性能瓶颈,常见优化方向包括:
maxThreads(默认200),且响应时间增长,可适当增大maxThreads(如调整为500),但需避免设置过大导致内存溢出;-Xms初始堆、-Xmx最大堆,如-Xms2g -Xmx4g),选择合适的垃圾回收器(如G1GC,-XX:+UseG1GC),减少GC停顿时间;protocol="org.apache.coyote.http11.Http11NioProtocol")或NIO2(protocol="org.apache.coyote.http11.Http11Nio2Protocol"),提升并发处理能力;compression="on")、设置缓存(expires="7200"),减少传输数据量;