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:Hikarimaximum-pool-size=50(envVELA_DB_POOL_SIZE)、connection-timeout 5s、pool-nameapplication-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 探活。