370 lines
7.3 KiB
Markdown
370 lines
7.3 KiB
Markdown
# 紧急修复:内存占用过高(6GB+)v3.11.14
|
||
|
||
## 📋 更新时间
|
||
2025-10-08
|
||
|
||
## 🚨 紧急问题
|
||
|
||
### 用户反馈
|
||
```
|
||
内存占用:6220MB(6.2GB)⚠️⚠️⚠️
|
||
开发者工具:开启
|
||
状态:内存持续增长
|
||
```
|
||
|
||
### 根本原因
|
||
|
||
#### 主要原因
|
||
1. **开发者工具开启** → 内存翻倍+
|
||
2. **批量日志启用** → 控制台积累大量日志
|
||
3. **高并发 + 长时间运行** → 内存泄漏累积
|
||
|
||
#### 内存占用分解
|
||
```
|
||
基础内存: ~500MB
|
||
Token数据(700个):~300MB
|
||
日志缓存: ~2000MB(开发者工具)⚠️
|
||
控制台渲染: ~2000MB(日志过多)⚠️
|
||
其他开销: ~1000MB
|
||
------------------------------------
|
||
总计: ~6000MB(6GB)⚠️
|
||
```
|
||
|
||
---
|
||
|
||
## ✅ 已实施的紧急修复
|
||
|
||
### 1️⃣ 关闭批量日志
|
||
|
||
**位置:** `src/stores/batchTaskStore.js` 第17行
|
||
|
||
```javascript
|
||
// 修改前
|
||
const ENABLE_BATCH_LOGS = true // 启用日志
|
||
|
||
// 修改后
|
||
const ENABLE_BATCH_LOGS = false // ⚠️ 关闭日志以减少内存
|
||
```
|
||
|
||
**效果:** 减少控制台日志输出,降低内存占用约2GB ⬇️
|
||
|
||
---
|
||
|
||
## 🚀 立即行动(重要!)
|
||
|
||
### 步骤1:关闭开发者工具(最重要!)
|
||
```
|
||
按 F12 关闭开发者工具
|
||
或点击 × 关闭控制台
|
||
|
||
⚠️ 开发者工具会让内存翻倍!
|
||
```
|
||
|
||
**效果:** 内存立即减少 2-3GB ⬇️
|
||
|
||
---
|
||
|
||
### 步骤2:刷新页面
|
||
```
|
||
1. 按 Ctrl + Shift + R(强制刷新)
|
||
2. 等待页面加载完成
|
||
3. 不要打开开发者工具!
|
||
```
|
||
|
||
**效果:** 清空内存,重新开始
|
||
|
||
---
|
||
|
||
### 步骤3:降低并发数
|
||
```
|
||
批量自动化页面
|
||
设置并发数:3-5(不要超过10!)
|
||
```
|
||
|
||
**效果:** 减少同时运行的WebSocket连接
|
||
|
||
---
|
||
|
||
### 步骤4:清理浏览器缓存(可选)
|
||
```
|
||
1. 按 Ctrl + Shift + Delete
|
||
2. 选择"缓存的图片和文件"
|
||
3. 清除
|
||
4. 重启浏览器
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 内存占用对比
|
||
|
||
### 开发者工具影响
|
||
|
||
| 场景 | 控制台状态 | 内存占用 |
|
||
|------|-----------|---------|
|
||
| **理想状态** | 关闭 | ~800MB ✅ |
|
||
| **日志关闭** | 开启 | ~1.5GB ⚠️ |
|
||
| **日志开启** | 开启 | ~6GB ❌ |
|
||
|
||
### 并发数影响
|
||
|
||
| 并发数 | 内存占用 | 推荐 |
|
||
|--------|---------|------|
|
||
| **3** | ~600MB | ✅ 最稳定 |
|
||
| **5** | ~800MB | ✅ 推荐 |
|
||
| **10** | ~1.2GB | ⚠️ 可接受 |
|
||
| **20** | ~2GB | ⚠️ 谨慎 |
|
||
| **50** | ~4GB | ❌ 不推荐 |
|
||
| **100** | ~6-8GB | ❌ 风险高 |
|
||
|
||
---
|
||
|
||
## 💡 正确的使用方式
|
||
|
||
### ✅ 推荐配置(稳定优先)
|
||
|
||
```
|
||
并发数: 5-10
|
||
开发者工具: 关闭(除非需要调试)
|
||
日志: 关闭(已默认关闭)
|
||
浏览器: 只开这一个标签页
|
||
```
|
||
|
||
**预期内存:** 800MB - 1.5GB ✅
|
||
|
||
---
|
||
|
||
### ⚠️ 调试配置(仅调试时)
|
||
|
||
```
|
||
并发数: 1-3
|
||
开发者工具: 开启
|
||
日志: 临时开启(需手动修改代码)
|
||
浏览器: 只开这一个标签页
|
||
```
|
||
|
||
**预期内存:** 1.5GB - 2.5GB ⚠️
|
||
|
||
**⚠️ 调试完成后立即:**
|
||
1. 关闭开发者工具
|
||
2. 刷新页面
|
||
3. 恢复正常配置
|
||
|
||
---
|
||
|
||
### ❌ 不推荐配置(内存爆炸)
|
||
|
||
```
|
||
并发数: >20
|
||
开发者工具: 开启
|
||
日志: 开启
|
||
浏览器: 多个标签页
|
||
```
|
||
|
||
**结果:** 内存 >6GB,浏览器崩溃 ❌
|
||
|
||
---
|
||
|
||
## 🔧 如何安全调试
|
||
|
||
### 方法1:只查看错误日志
|
||
```javascript
|
||
// 不启用批量日志,只看error和warn
|
||
console.error() ✅ 始终显示
|
||
console.warn() ✅ 始终显示
|
||
console.log() ❌ 被batchLog()过滤
|
||
```
|
||
|
||
**优点:** 内存占用低,能看到关键错误
|
||
|
||
---
|
||
|
||
### 方法2:短时开启调试
|
||
```
|
||
1. 只选择1个token测试
|
||
2. 并发设为1
|
||
3. 临时启用日志(修改代码)
|
||
4. 开启开发者工具
|
||
5. 执行并观察日志
|
||
6. 测试完立即关闭工具
|
||
7. 恢复配置
|
||
```
|
||
|
||
**优点:** 可以看到详细日志,但不会长时间占用内存
|
||
|
||
---
|
||
|
||
### 方法3:分批调试
|
||
```
|
||
调试阶段:
|
||
- 1个token,开工具,看日志
|
||
- 找到问题,修复
|
||
|
||
正式运行:
|
||
- 关闭工具,关闭日志
|
||
- 10+个token批量运行
|
||
```
|
||
|
||
---
|
||
|
||
## 📈 内存监控建议
|
||
|
||
### Windows任务管理器
|
||
|
||
```
|
||
1. 按 Ctrl + Shift + Esc 打开任务管理器
|
||
2. 找到浏览器进程(Chrome/Edge)
|
||
3. 观察"内存"列
|
||
|
||
⚠️ 如果内存 >3GB:
|
||
- 立即关闭开发者工具
|
||
- 降低并发数
|
||
- 刷新页面
|
||
```
|
||
|
||
### 浏览器内存监控
|
||
|
||
```
|
||
1. 按 Shift + Esc(浏览器任务管理器)
|
||
2. 找到当前标签页
|
||
3. 观察内存占用
|
||
|
||
⚠️ 如果持续增长不释放:
|
||
- 可能存在内存泄漏
|
||
- 重启浏览器
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 优化后的预期效果
|
||
|
||
### 正常运行(关闭工具)
|
||
|
||
| Token数 | 并发 | 内存峰值 | 执行时间 |
|
||
|---------|------|---------|---------|
|
||
| **10** | 5 | ~800MB | ~2分钟 |
|
||
| **50** | 10 | ~1.2GB | ~8分钟 |
|
||
| **100** | 10 | ~1.5GB | ~15分钟 |
|
||
| **700** | 10 | ~1.8GB | ~70分钟(7批) |
|
||
|
||
### 调试模式(开启工具)
|
||
|
||
| Token数 | 并发 | 内存峰值 | 建议 |
|
||
|---------|------|---------|------|
|
||
| **1** | 1 | ~800MB | ✅ 可以调试 |
|
||
| **5** | 3 | ~1.5GB | ⚠️ 短时调试 |
|
||
| **10** | 5 | ~2.5GB | ⚠️ 不建议 |
|
||
| **50+** | 任意 | >4GB | ❌ 禁止 |
|
||
|
||
---
|
||
|
||
## ⚠️ 重要警告
|
||
|
||
### 禁止操作
|
||
|
||
```
|
||
❌ 长时间开启开发者工具运行大批量任务
|
||
❌ 并发数超过20且开启工具
|
||
❌ 启用日志且开启工具且高并发
|
||
❌ 同时打开多个浏览器标签页
|
||
```
|
||
|
||
### 后果
|
||
|
||
```
|
||
内存爆炸 → 浏览器卡死 → 数据丢失 → 重启浏览器
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 检查清单
|
||
|
||
### 运行前检查
|
||
```
|
||
[ ] 开发者工具已关闭
|
||
[ ] 并发数 ≤ 10
|
||
[ ] 日志已关闭(默认)
|
||
[ ] 其他标签页已关闭
|
||
[ ] 可用内存 >2GB
|
||
```
|
||
|
||
### 运行中监控
|
||
```
|
||
[ ] 任务管理器:浏览器内存 <2GB
|
||
[ ] 页面响应:流畅,无卡顿
|
||
[ ] 成功率:>80%
|
||
```
|
||
|
||
### 异常处理
|
||
```
|
||
如果内存 >3GB:
|
||
[ ] 立即关闭开发者工具
|
||
[ ] 暂停批量任务
|
||
[ ] 刷新页面释放内存
|
||
|
||
如果浏览器卡死:
|
||
[ ] 强制结束进程
|
||
[ ] 重启浏览器
|
||
[ ] 降低并发数再试
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 版本历史
|
||
|
||
### v3.11.14 (2025-10-08) - 紧急修复
|
||
- 🐛 修复:内存占用过高(6GB+)
|
||
- ⚡ 关闭:批量日志默认关闭
|
||
- 📝 说明:添加内存管理指南
|
||
|
||
### v3.11.13 (2025-10-08)
|
||
- ⚡ 增加:所有任务超时时间
|
||
|
||
### v3.11.12 (2025-10-08)
|
||
- 🐛 修复:任务全部失败
|
||
- ⚡ 放宽:连接和任务间隔
|
||
|
||
---
|
||
|
||
## 🎉 总结
|
||
|
||
内存占用6GB的根本原因:
|
||
|
||
1. ⚠️ **开发者工具开启** - 导致内存翻倍(2-3GB额外占用)
|
||
2. ⚠️ **批量日志启用** - 控制台积累大量日志(2GB额外占用)
|
||
3. ⚠️ **高并发运行** - 大量WebSocket连接(1-2GB基础占用)
|
||
|
||
### 解决方案
|
||
✅ **关闭开发者工具** - 立即减少2-3GB
|
||
✅ **关闭批量日志** - 减少2GB日志占用
|
||
✅ **降低并发数** - 减少基础内存占用
|
||
✅ **刷新页面** - 清空内存重新开始
|
||
|
||
### 正确使用方式
|
||
```
|
||
关闭工具 + 关闭日志 + 并发5-10 = 内存800MB-1.5GB ✅
|
||
|
||
开启工具 + 开启日志 + 高并发 = 内存6GB+ ❌
|
||
```
|
||
|
||
---
|
||
|
||
**立即执行以下操作:**
|
||
|
||
1. ✅ **按F12关闭开发者工具**(最重要!)
|
||
2. ✅ **按Ctrl+Shift+R刷新页面**
|
||
3. ✅ **设置并发数为5-10**
|
||
4. ✅ **重新测试,观察内存**
|
||
|
||
预期内存:800MB - 1.5GB ✅
|
||
|
||
---
|
||
|
||
**如有问题,请告诉我:**
|
||
1. 关闭工具后的内存占用
|
||
2. 是否仍有异常
|
||
3. 任务执行是否正常
|
||
|
||
我会继续协助优化!🚀
|
||
|
||
|