# 《AI 新范式》第7节:压测项目分析性能

作者:小傅哥
博客:https://bugstack.cn (opens new window)
视频:https://t.zsxq.com/s9kU2 (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!😄

线上压测 · 瓶颈定位 · 参数调优,让应用扛住真实流量。

# 一、本章诉求

使用 AB 和 Arthas 对线上应用进行压力测试,定位性能瓶颈,通过慢查询优化、缓存命中率提升、连接池调优和 JVM 参数调整,让应用扛住真实流量。

# 二、压测工具与实战

# 1. wrk 轻量压测

单机 HTTP 压测利器,一条命令快速获取 QPS、延迟分布。

# 2. JMeter 全景压测

GUI 编写测试计划,模拟多场景、多接口组合压测。

# 3. 关键指标

TPS/QPS、P99 延迟、错误率,三个维度判断服务健康。

# 三、wrk 快速压测

# 安装 wrk
sudo apt install wrk

# 12线程 200连接 持续30秒
wrk -t12 -c200 -d30s \
  http://47.98.x.x:8080/api/form/list

# 输出示例
Requests/sec:  3256.21
Latency P99:   45.3ms
1
2
3
4
5
6
7
8
9
10

# 四、JMeter 测试计划

# 命令行运行
jmeter -n -t form_test.jmx \
  -l result.jtl \
  -e -o report/

# 测试场景设计
线程组: 100线程, Ramp-up 10s
循环: 50次
断言: HTTP 200
监听: 聚合报告 + 响应图
1
2
3
4
5
6
7
8
9
10

# 五、性能分析与调优

整体调优流程如下:

🔥 压测施压(发现问题)
        ↓ 定位瓶颈
🔍 分析瓶颈(MySQL / Redis / JVM)
        ↓ 针对优化
✅ 验证提升(TPS 提升 P99 下降)
1
2
3
4
5

# 1. MySQL 优化

# 慢查询日志
SET GLOBAL slow_query_log = ON;
SET GLOBAL long_query_time = 1;

# 分析慢查询
EXPLAIN SELECT * FROM form_data
  WHERE form_id = 1;

# 添加索引
ALTER TABLE form_data
  ADD INDEX idx_form_id (form_id);
1
2
3
4
5
6
7
8
9
10
11

# 2. Redis + JVM 调优

# Redis 连接池调优
lettuce.pool.max-active: 16
lettuce.pool.max-idle: 8

# JVM 启动参数
java -jar app.jar \
  -Xms512m -Xmx512m \
  -XX:+UseG1GC \
  -XX:MaxGCPauseMillis=50

# 查看 GC 日志
-Xlog:gc*:gc.log
1
2
3
4
5
6
7
8
9
10
11
12

💡 调优顺序:慢查询优化 → 缓存命中率 → 连接池 → JVM,逐项验证效果

# 六、读者作业

  • 简单作业:使用 wrk 对你的应用接口进行压测,记录 QPS 和 P99 延迟数据。
  • 复杂作业:思考 G1 和 CMS 垃圾收集器的区别?为什么 G1 更适合大内存应用?如何通过 GC 日志判断是否需要调优?