8.9 KiB
8.9 KiB
性能优化:Token连接间隔缩短至500ms v3.11.7
📋 更新时间
2025-10-08
🎯 优化目标
将批量自动化中Token之间的连接启动间隔从 3000ms (3秒) 缩短至 500ms (0.5秒),加快批量任务的启动速度。
重要说明: 保持每个Token连接成功后的 2秒稳定等待时间 不变。
📊 修改前后对比
修改前配置(v3.11.6)
// Token之间的连接间隔
const delayMs = connectionIndex * 3000 // 3秒
// 连接成功后的稳定等待
await new Promise(resolve => setTimeout(resolve, 2000)) // 2秒(不变)
启动时间示例(并发5):
Token 1: 立即启动
Token 2: 等待3秒后启动
Token 3: 等待6秒后启动
Token 4: 等待9秒后启动
Token 5: 等待12秒后启动
第一批启动完成:12秒
修改后配置(v3.11.7)
// Token之间的连接间隔(缩短为0.5秒)
const delayMs = connectionIndex * 500 // 0.5秒 ⬇️
// 连接成功后的稳定等待(保持不变)
await new Promise(resolve => setTimeout(resolve, 2000)) // 2秒
启动时间示例(并发5):
Token 1: 立即启动
Token 2: 等待0.5秒后启动
Token 3: 等待1.0秒后启动
Token 4: 等待1.5秒后启动
Token 5: 等待2.0秒后启动
第一批启动完成:2秒 ⬇️
✨ 优化效果
启动时间对比
| 并发数 | 修改前启动时间 | 修改后启动时间 | 节省时间 |
|---|---|---|---|
| 3个 | 6秒 | 1秒 | 节省5秒 |
| 5个 | 12秒 | 2秒 | 节省10秒 |
| 10个 | 27秒 | 4.5秒 | 节省22.5秒 |
| 21个 | 60秒 | 10秒 | 节省50秒 |
整体任务时间对比
| 场景 | 修改前 | 修改后 | 改进 |
|---|---|---|---|
| 21个Token(并发3,7批) | 启动42秒 + 任务时间 | 启动7秒 + 任务时间 | 启动快6倍 |
| 21个Token(并发5,5批) | 启动48秒 + 任务时间 | 启动8秒 + 任务时间 | 启动快6倍 |
| 100个Token(并发10,10批) | 启动270秒 + 任务时间 | 启动45秒 + 任务时间 | 启动快6倍 |
性能提升
- ✅ 启动速度提升 6倍:Token连接启动时间大幅缩短
- ✅ 整体时间减少:特别是大批量任务时效果显著
- ✅ 用户体验改善:等待时间更短,响应更快
- ✅ 保持稳定性:连接成功后仍然等待2秒,确保连接稳定
🔧 代码修改
修改的文件
src/stores/batchTaskStore.js
修改内容(第257-260行)
// 修改前
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
// 每个连接间隔3000ms(3秒),6个连接总计18秒
const delayMs = connectionIndex * 3000
connectionIndex++
// 修改后
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
// 每个连接间隔500ms(0.5秒),快速启动但仍然错开
const delayMs = connectionIndex * 500
connectionIndex++
不变的配置(第346-348行)
// ✅ 保持不变:连接成功后的稳定等待
console.log(`⏳ 等待连接稳定...`)
await new Promise(resolve => setTimeout(resolve, 2000))
📈 时间线对比
21个Token,并发5,示例时间线
修改前(3秒间隔)
0s ─ Token 1 启动 → 2s稳定 → 4s开始任务
3s ─ Token 2 启动 → 5s稳定 → 7s开始任务
6s ─ Token 3 启动 → 8s稳定 → 10s开始任务
9s ─ Token 4 启动 → 11s稳定 → 13s开始任务
12s ─ Token 5 启动 → 14s稳定 → 16s开始任务
14s ─ 第一批完成启动
(Token 1完成后,Token 6才开始启动)
修改后(0.5秒间隔)
0s ─ Token 1 启动 → 2s稳定 → 4s开始任务
0.5s ─ Token 2 启动 → 2.5s稳定 → 4.5s开始任务
1s ─ Token 3 启动 → 3s稳定 → 5s开始任务
1.5s ─ Token 4 启动 → 3.5s稳定 → 5.5s开始任务
2s ─ Token 5 启动 → 4s稳定 → 6s开始任务
4s ─ 第一批完成启动 ⬇️(快10秒)
(Token 1完成后,Token 6才开始启动)
⚠️ 注意事项
连接间隔 vs 稳定等待的区别
| 项目 | 连接间隔 | 稳定等待 |
|---|---|---|
| 时机 | Token启动前 | 连接成功后 |
| 目的 | 错开连接时间,避免服务器压力 | 确保WebSocket连接稳定 |
| 修改状态 | ✅ 已缩短至500ms | ✅ 保持2000ms不变 |
| 影响范围 | 仅影响启动速度 | 影响连接稳定性 |
可能的风险
-
服务器压力增加:
- 多个Token在短时间内快速连接
- 可能触发服务器的频率限制
- ⚠️ 如果出现大量连接失败,考虑调整为1000ms
-
适用场景:
- ✅ 服务器性能良好
- ✅ 网络状况稳定
- ✅ Token数量适中(≤50)
- ❌ 服务器有严格的频率限制
- ❌ 网络极不稳定
- ❌ 超大批量(>100)
监控建议
在使用新配置时,请注意观察:
-
连接成功率:
- Token连接是否都能成功
- 是否出现频繁的连接失败
-
服务器响应:
- 是否有"请求过快"的错误
- 是否有连接被拒绝的情况
-
日志信息:
✅ 正常:⏳ Token xxx 将在 0.5秒 后建立连接 ✅ 正常:✅ WebSocket连接成功: xxx ⚠️ 警告:WebSocket连接失败(已重试5次)
🧪 测试建议
测试场景1:小批量(3-5个Token)
- 运行批量自动化,选择3-5个token
- 观察启动速度:
- ✅ 是否快速启动(1-2秒内全部开始连接)
- ✅ 连接是否都成功
- ✅ 任务是否正常执行
测试场景2:中批量(10-20个Token)
- 运行批量自动化,选择10-20个token
- 设置并发数为5-10
- 观察:
- ✅ 启动速度对比(应该快很多)
- ✅ 连接成功率
- ⚠️ 是否有服务器限流提示
测试场景3:大批量(50+个Token)
- 运行批量自动化,选择50+个token
- 观察:
- ✅ 整体完成时间
- ⚠️ 连接失败率是否增加
- 💡 如果失败率高,考虑调整为1000ms
🔄 调整方案
如果500ms导致连接失败率增加,可以调整为更保守的值:
方案A:调整为1000ms(推荐)
const delayMs = connectionIndex * 1000 // 1秒
- 仍然比原来的3秒快3倍
- 对服务器更友好
方案B:调整为2000ms(保守)
const delayMs = connectionIndex * 2000 // 2秒
- 比原来快1.5倍
- 适合服务器限流严格的情况
方案C:恢复3000ms(极保守)
const delayMs = connectionIndex * 3000 // 3秒
- 恢复原配置
- 适合服务器极度敏感的情况
📊 实际效果记录
建议记录的指标
| 指标 | 修改前 | 修改后 | 改进 |
|---|---|---|---|
| 21个Token启动时间 | ___秒 | ___秒 | ___% |
| 连接成功率 | ___% | ___% | ___% |
| 整体完成时间 | ___分___秒 | ___分___秒 | ___% |
| 连接失败次数 | ___次 | ___次 | ___次 |
请在实际使用中填写,以评估优化效果
💡 未来优化方向
-
可配置连接间隔:
- 在UI中添加连接间隔配置选项
- 允许用户根据实际情况调整(500ms-3000ms)
-
自适应间隔:
- 根据连接失败率自动调整间隔
- 失败率高时自动延长间隔
-
批次优化:
- 首批连接使用较短间隔
- 后续批次根据前批次的成功率动态调整
-
智能错峰:
- 检测服务器负载
- 在服务器空闲时使用更短的间隔
🔗 相关文档
- 批量自动化-超时延迟配置表v3.11.md
- [性能优化-发车超时统一1000ms v3.11.6.md](./性能优化-发车超时统一1000ms v3.11.6.md)
- 功能更新-自动重试失败任务v3.7.0.md
📝 版本历史
v3.11.7 (2025-10-08)
- ⚡ 性能优化:Token连接间隔从3000ms缩短至500ms
- 📊 预期效果:启动速度提升6倍
- 🔄 说明:保持连接稳定等待2000ms不变
v3.11.6 (2025-10-08)
- ⚡ 性能优化:发车任务超时统一调整为1000ms
v3.11.5 (2025-10-08)
- 🐛 修复:答题任务3100080错误处理
🎉 总结
此次优化将Token连接间隔从 3秒 缩短至 0.5秒,预期可将批量任务的启动时间缩短83%(快6倍)。
关键点:
- ✅ 只缩短连接间隔:从3秒改为0.5秒
- ✅ 保持稳定等待:连接成功后仍然等待2秒
- ✅ 启动更快:21个Token启动从60秒变为10秒
- ⚠️ 注意监控:观察连接成功率,必要时可调整为1秒
建议:
- ✅ 先测试小批量任务(3-5个)
- ✅ 观察连接成功率
- ✅ 如有频繁失败,调整为1000ms
- 📊 记录实际效果,提供反馈
反馈: 请在使用后提供实际效果反馈,特别是连接成功率的变化!