298 lines
8.9 KiB
Markdown
298 lines
8.9 KiB
Markdown
# 性能优化:Token连接间隔缩短至500ms v3.11.7
|
||
|
||
## 📋 更新时间
|
||
2025-10-08
|
||
|
||
## 🎯 优化目标
|
||
将批量自动化中**Token之间的连接启动间隔**从 **3000ms (3秒)** 缩短至 **500ms (0.5秒)**,加快批量任务的启动速度。
|
||
|
||
**重要说明:** 保持每个Token连接成功后的 **2秒稳定等待时间** 不变。
|
||
|
||
## 📊 修改前后对比
|
||
|
||
### 修改前配置(v3.11.6)
|
||
|
||
```javascript
|
||
// 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)
|
||
|
||
```javascript
|
||
// 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倍** |
|
||
|
||
### 性能提升
|
||
|
||
1. ✅ **启动速度提升 6倍**:Token连接启动时间大幅缩短
|
||
2. ✅ **整体时间减少**:特别是大批量任务时效果显著
|
||
3. ✅ **用户体验改善**:等待时间更短,响应更快
|
||
4. ✅ **保持稳定性**:连接成功后仍然等待2秒,确保连接稳定
|
||
|
||
## 🔧 代码修改
|
||
|
||
### 修改的文件
|
||
`src/stores/batchTaskStore.js`
|
||
|
||
### 修改内容(第257-260行)
|
||
|
||
```javascript
|
||
// 修改前
|
||
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
|
||
// 每个连接间隔3000ms(3秒),6个连接总计18秒
|
||
const delayMs = connectionIndex * 3000
|
||
connectionIndex++
|
||
|
||
// 修改后
|
||
// 🆕 关键优化:错开连接时间,避免服务器反批量检测
|
||
// 每个连接间隔500ms(0.5秒),快速启动但仍然错开
|
||
const delayMs = connectionIndex * 500
|
||
connectionIndex++
|
||
```
|
||
|
||
### 不变的配置(第346-348行)
|
||
|
||
```javascript
|
||
// ✅ 保持不变:连接成功后的稳定等待
|
||
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(推荐)
|
||
```javascript
|
||
const delayMs = connectionIndex * 1000 // 1秒
|
||
```
|
||
- 仍然比原来的3秒快3倍
|
||
- 对服务器更友好
|
||
|
||
### 方案B:调整为2000ms(保守)
|
||
```javascript
|
||
const delayMs = connectionIndex * 2000 // 2秒
|
||
```
|
||
- 比原来快1.5倍
|
||
- 适合服务器限流严格的情况
|
||
|
||
### 方案C:恢复3000ms(极保守)
|
||
```javascript
|
||
const delayMs = connectionIndex * 3000 // 3秒
|
||
```
|
||
- 恢复原配置
|
||
- 适合服务器极度敏感的情况
|
||
|
||
## 📊 实际效果记录
|
||
|
||
### 建议记录的指标
|
||
|
||
| 指标 | 修改前 | 修改后 | 改进 |
|
||
|------|--------|--------|------|
|
||
| 21个Token启动时间 | ___秒 | ___秒 | ___% |
|
||
| 连接成功率 | ___% | ___% | ___% |
|
||
| 整体完成时间 | ___分___秒 | ___分___秒 | ___% |
|
||
| 连接失败次数 | ___次 | ___次 | ___次 |
|
||
|
||
**请在实际使用中填写,以评估优化效果**
|
||
|
||
## 💡 未来优化方向
|
||
|
||
1. **可配置连接间隔**:
|
||
- 在UI中添加连接间隔配置选项
|
||
- 允许用户根据实际情况调整(500ms-3000ms)
|
||
|
||
2. **自适应间隔**:
|
||
- 根据连接失败率自动调整间隔
|
||
- 失败率高时自动延长间隔
|
||
|
||
3. **批次优化**:
|
||
- 首批连接使用较短间隔
|
||
- 后续批次根据前批次的成功率动态调整
|
||
|
||
4. **智能错峰**:
|
||
- 检测服务器负载
|
||
- 在服务器空闲时使用更短的间隔
|
||
|
||
## 🔗 相关文档
|
||
|
||
- [批量自动化-超时延迟配置表v3.11.md](./批量自动化-超时延迟配置表v3.11.md)
|
||
- [性能优化-发车超时统一1000ms v3.11.6.md](./性能优化-发车超时统一1000ms v3.11.6.md)
|
||
- [功能更新-自动重试失败任务v3.7.0.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
|
||
- 📊 记录实际效果,提供反馈
|
||
|
||
**反馈:** 请在使用后提供实际效果反馈,特别是连接成功率的变化!
|
||
|