Files
xyzw_web_helper/MD说明文件夹/性能优化-Token连接间隔缩短至500ms v3.11.7.md
2025-10-17 20:56:50 +08:00

8.9 KiB
Raw Permalink Blame History

性能优化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并发37批 启动42秒 + 任务时间 启动7秒 + 任务时间 启动快6倍
21个Token并发55批 启动48秒 + 任务时间 启动8秒 + 任务时间 启动快6倍
100个Token并发1010批 启动270秒 + 任务时间 启动45秒 + 任务时间 启动快6倍

性能提升

  1. 启动速度提升 6倍Token连接启动时间大幅缩短
  2. 整体时间减少:特别是大批量任务时效果显著
  3. 用户体验改善:等待时间更短,响应更快
  4. 保持稳定性连接成功后仍然等待2秒确保连接稳定

🔧 代码修改

修改的文件

src/stores/batchTaskStore.js

修改内容第257-260行

// 修改前
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
// 每个连接间隔3000ms3秒6个连接总计18秒
const delayMs = connectionIndex * 3000
connectionIndex++

// 修改后
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
// 每个连接间隔500ms0.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不变
影响范围 仅影响启动速度 影响连接稳定性

可能的风险

  1. 服务器压力增加

    • 多个Token在短时间内快速连接
    • 可能触发服务器的频率限制
    • ⚠️ 如果出现大量连接失败考虑调整为1000ms
  2. 适用场景

    • 服务器性能良好
    • 网络状况稳定
    • Token数量适中≤50
    • 服务器有严格的频率限制
    • 网络极不稳定
    • 超大批量(>100

监控建议

在使用新配置时,请注意观察:

  1. 连接成功率

    • Token连接是否都能成功
    • 是否出现频繁的连接失败
  2. 服务器响应

    • 是否有"请求过快"的错误
    • 是否有连接被拒绝的情况
  3. 日志信息

    ✅ 正常:⏳ Token xxx 将在 0.5秒 后建立连接
    ✅ 正常:✅ WebSocket连接成功: xxx
    ⚠️ 警告WebSocket连接失败已重试5次
    

🧪 测试建议

测试场景1小批量3-5个Token

  1. 运行批量自动化选择3-5个token
  2. 观察启动速度:
    • 是否快速启动1-2秒内全部开始连接
    • 连接是否都成功
    • 任务是否正常执行

测试场景2中批量10-20个Token

  1. 运行批量自动化选择10-20个token
  2. 设置并发数为5-10
  3. 观察:
    • 启动速度对比(应该快很多)
    • 连接成功率
    • ⚠️ 是否有服务器限流提示

测试场景3大批量50+个Token

  1. 运行批量自动化选择50+个token
  2. 观察:
    • 整体完成时间
    • ⚠️ 连接失败率是否增加
    • 💡 如果失败率高考虑调整为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启动时间 ___秒 ___秒 ___%
连接成功率 ___% ___% ___%
整体完成时间 ___分___秒 ___分___秒 ___%
连接失败次数 ___次 ___次 ___次

请在实际使用中填写,以评估优化效果

💡 未来优化方向

  1. 可配置连接间隔

    • 在UI中添加连接间隔配置选项
    • 允许用户根据实际情况调整500ms-3000ms
  2. 自适应间隔

    • 根据连接失败率自动调整间隔
    • 失败率高时自动延长间隔
  3. 批次优化

    • 首批连接使用较短间隔
    • 后续批次根据前批次的成功率动态调整
  4. 智能错峰

    • 检测服务器负载
    • 在服务器空闲时使用更短的间隔

🔗 相关文档

📝 版本历史

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
  • 📊 记录实际效果,提供反馈

反馈: 请在使用后提供实际效果反馈,特别是连接成功率的变化!