做一次系统压测报告

前端崩溃分析 前端请求携带大量产品 ID 拼接到 URL,导致 URL 超长请求失败 📌 压测场景说明 压测入口接口:/batchChannelProduct/save 数据量级:Excel 文件中包含 69 条产品对接…


前端崩溃分析

  • 前端请求携带大量产品 ID 拼接到 URL,导致 URL 超长请求失败

📌 压测场景说明

  • 压测入口接口:/batchChannelProduct/save
  • 数据量级:Excel 文件中包含 69 条产品对接配置数据
  • 预期效果:请求能在合理时间内完成,资源使用无明显异常,功能逻辑正确

📊 资源监控结果

1. 📈 CPU & Memory 使用趋势图(每秒采样)

历史图片占位:Pasted image 20250721172208.png 历史图片占位:Pasted image 20250721172218.png (说明:第 1 秒开始 CPU 从 11m ➜ 755m,内存从 1193Mi ➜ 1221Mi)

(说明:CPU 降至 8m,内存仍增长至 1239Mi)

🧠 IAC运行状态

指标 当前值 说明

JVM内存分配 堆:6GB(used:395MB)非堆:1.2GB(used:271MB) 总体内存使用率较低,无内存泄漏迹象

GC情况 ParNew GC:755 次,时间 61sCMS GC:0次 暂未触发 Full GC,长时间未清老年代

类加载数 33,223 正常偏高

线程数 当前 227 个,峰值 232 线程数健康

操作系统 Linux x86_64,单核容器 资源有限

JVM参数 -XX:+UseCMSInitiatingOccupancyOnly-XX:MaxRAMPercentage=75.0 容器内有效限制了 JVM 可用内存上限为 6GB

🔍 详细解读

① 💾 HEAP MEMORY(堆内存)

init: 6GB  
used: 395.5MB  
committed/max: 6GB

✅ 当前堆使用率为 395MB / 6GB ≈ 6.3%

说明当前并没有内存紧张或泄漏迹象,已经压测过,系统仍旧留有大量空间。

② 💡 NON-HEAP MEMORY(非堆内存)

used: 271.5MB  
max: 1.2GB
  • 包含 Metaspace、CodeCache 等
  • 设置了 -XX:MaxMetaspaceSize=512M,但当前非堆内存已经超过 271MB
  • 属于合理区间,未见异常

③ ♻️ GC 情况(垃圾回收)

ParNew: 755 次,61970ms  
CMS: 0 次,0ms

CMS(老年代)未被触发!

  • 对象大多在新生代就被清理干净
  • 批量任务内存增长后并未触发 Full GC

✅ 当前未发现 GC 停顿

④ 🧵 线程情况

Thread Count: 227  
Daemon Threads: 103  
Peak: 232  
Started: 2709  
Deadlock: 0
  • 当前线程数健康,未发现死锁
  • 峰值线程数 < 300,合理
  • Started 数较高(可能是线程池不断创建和销毁)

✅ 建议检查线程池是否使用合理,线程是否有回收机制

⑤ 📦 JVM 参数

-XX:InitialRAMPercentage=75.0
-XX:MaxRAMPercentage=75.0
-XX:+UseConcMarkSweepGC
-XX:+DisableExplicitGC
-XX:+HeapDumpOnOutOfMemoryError

✅ 设置了合理的内存百分比参数,符合容器化部署最佳实践

✅ 设置了 OOM dump,可用于分析生产异常

评论