1. JMH (Java Microbenchmark Harness)
JMH是专门针对Java代码的微基准测试工具,用于精确测量方法级性能(如算法优化、代码片段执行时间)。它解决了传统基准测试中的“预热不足”“统计误差”等问题,支持**平均时间、吞吐量、百分位(P99/P999)**等多种指标,结果可导出为CSV或HTML格式。
在CentOS上,可通过Maven/Gradle添加依赖(org.openjdk.jmh:jmh-core、org.openjdk.jmh:jmh-generator-annprocess),编写带@Benchmark注解的测试类,使用OptionsBuilder配置预热迭代次数、测量迭代次数等参数,通过Runner类运行测试。
2. Apache JMeter
JMeter是开源负载测试工具,支持HTTP、HTTPS、JDBC、FTP等多种协议,适用于Web应用、API、数据库等的性能测试。其核心优势在于可视化GUI配置(如线程组、HTTP请求、监听器)、分布式测试(多台机器模拟高并发)和丰富的报告(聚合报告、响应时间图)。
在CentOS上,可通过wget下载二进制包解压,使用命令行模式(./jmeter -n -t testplan.jmx -l result.jtl)运行测试,避免GUI模式的高资源消耗。适合模拟大量用户并发访问,评估系统吞吐量(TPS/QPS)、响应时间等指标。
3. Gatling
Gatling是基于Scala/DSL的高性能负载测试框架,采用异步、事件驱动模型,资源占用远低于JMeter(如1台机器可模拟10万级并发)。其脚本简洁(类似REST API调用),支持动态数据生成(如Feeder)、实时报告(HTML/JSON格式),适合高并发API测试(如微服务接口)。
在CentOS上,可通过yum或wget安装,编写DSL脚本(定义请求链、参数化、断言),使用gatling.sh命令运行,生成的报告可直接查看响应时间分布、错误率等。
4. VisualVM
VisualVM是JDK自带的JVM监控与性能分析工具,提供可视化界面查看Java应用的CPU、内存、线程、类加载等实时指标。支持远程监控(通过JMX连接)、堆转储分析(定位内存泄漏)、线程Dump分析(解决死锁问题),适合开发人员在本地或服务器上快速排查性能瓶颈。
在CentOS上,若未安装可通过yum install java-1.8.0-openjdk-devel获取,启动后通过“本地进程”或“远程主机”连接目标Java应用,查看实时性能数据。
5. JProfiler/YourKit
JProfiler和YourKit是商业Java性能分析工具(也有试用版),提供深度性能分析能力,包括CPU热点方法、内存分配追踪(如对象创建路径)、线程阻塞分析(如锁竞争)、数据库查询性能(如SQL执行时间)。支持生产环境部署(低开销),生成详细的分析报告(如火焰图、调用树)。
在CentOS上,下载安装包后配置代理或直接连接目标应用,通过GUI界面查看实时性能数据,适合定位复杂性能问题(如内存泄漏、高CPU占用)。
6. sysbench
sysbench是跨平台系统基准测试工具,可用于评估CentOS服务器的CPU计算能力(素数计算)、内存读写性能(随机访问)、磁盘I/O性能(随机读/顺序写)、线程调度效率等。其结果可作为Java应用运行的基础环境参考,帮助判断硬件是否成为性能瓶颈。
在CentOS上,通过yum install sysbench安装,使用命令如sysbench cpu --threads=4 run(CPU测试)、sysbench memory --memory-total-size=1G run(内存测试)进行测试,结果包含事件数、耗时、每秒操作数等指标。
7. stress/ng
stress/ng是Linux系统压力测试工具,用于模拟CPU、内存、磁盘I/O、磁盘空间等资源的高负载场景,测试Java应用在极端条件下的稳定性(如OOM、响应变慢)。支持自定义压力参数(如CPU核心数、内存大小),可长时间运行观察系统表现。
在CentOS上,通过yum install stress-ng安装,使用命令如stress-ng --cpu 4 --timeout 600(CPU满载5分钟)、stress-ng --vm 2 --vm-bytes 2G --timeout 600(分配2G内存持续5分钟)进行测试。