跳转至

VelaSim 测试报告

执行环境:Windows 11 · Java 21 · 后端 dev/H2 档位(--spring.profiles.active=dev)· 前端 vite dev(5199 端口,/api 代理 8080) 执行时间:2026-09-04 · 执行方式:Playwright 实跑 + Node 并发压测实跑(JMeter 计划同场景可用)

1. 单元/集成测试(Maven)

mvn install 全量测试随构建执行,构建结果 BUILD SUCCESS(36+ 用例:认证全流程/作业状态机/核时计费/参数缓存回源/网盘路径防穿越/AES 凭据等)。

2. E2E 冒烟(Playwright 实跑)

deploy/velasim-e2e.spec.ts · deploy/playwright.config.ts · Chromium

# 场景 结果 耗时
1 门户首页可访问且四大入口可见 ✅ PASS 405ms
2 机理模型库公开浏览(标题定位) ✅ PASS 310ms
3 登录 → 作业列表 → 提交向导三步 ✅ PASS 592ms
4 网盘页加载(登录后直入) ✅ PASS 684ms

4/4 全绿。登录链路验证:dev 档位验证码自动关闭(DevProfileSetup,生产不受影响)→ 账密登录 → 跳转工作台。

运行方式:

# 前置:后端 8080(dev)+ 前端 dev server(VELA_BASE_URL 指定)
cd deploy
VELA_BASE_URL=http://127.0.0.1:5199 npx playwright test

3. 并发压测(实跑数据)

deploy/loadtest.mjs(Node 内置并发,复刻 velasim-jmeter.jmx 三场景 + 门户模型库;有 JMeter 环境可直接跑 jmx 同参数)

方法:登录取 token → 每场景 1000 请求 / 100 并发 → P50/P95/P99/错误率。 前置:预热 3 轮后测量(冷 JVM 数据失真,见附录)。

场景 目标(架构方案 10 节) P50 P95 P99 错误率 RPS
作业列表分页 P95≤300ms 78ms 204ms ✅ 250ms 0.00% 1417
网盘列表 P95≤300ms 40ms 42ms ✅ 52ms 0.00% 2028
计费余额 P95≤200ms 40ms 112ms ✅ 166ms 0.00% 2028
门户模型库 P95≤300ms 88ms 180ms ✅ 228ms 0.00% 1052

结论:4/4 场景达标,0 错误;瓶颈项(作业列表)得益于 Hikari 连接池调优(默认 10 → 50,VELA_DB_POOL_SIZE 可覆盖)。生产 MySQL 8 + 优化配置(rewriteBatchedStatements、索引随迁移交付)下余量更大。

调优落点(本轮实测驱动)

  • application.yml:Hikari maximum-pool-size=50(env VELA_DB_POOL_SIZE)、connection-timeout 5s、pool-name
  • application-prod.yml:同参数;MySQL URL 带 rewriteBatchedStatements=true
  • 虚拟线程(spring.threads.virtual.enabled=true)+ Caffeine 参数/黑名单缓存 + MyBatis-Plus 分页索引(迁移内建)

4. 已知边界(真实环境联调项,需现场资源)

项 说明
SGE/Slurm 实机 命令通道抽象已交付,需集群实测 qsub/sbatch 往返
guacd/FFmpeg 需主机安装后实测隧道与转码管线
华为/阿里云 SDK 需真实 AK/SK 走 RunCommand 初始化流程
SMTP 2FA 实发 需邮箱服务配置
压测对标 本报告为 dev 单机数据;生产建议用 JMeter 计划跑 ≥500 线程 5 分钟并记录 MySQL 慢查询

附录:冷启动 vs 预热

场景 冷 JVM P95 预热后 P95
作业列表分页 1353ms 204ms
网盘列表 658ms 42ms

生产发布后建议先做一轮低频预热(健康检查+核心接口)再接入流量;部署脚本已含启动后 health 探活。