V6采集站索引上传积压问题
问题描述
XXX V6采集站5.8.0视频索引上传出现严重积压,导致重要视频文件无法及时上传到平台。
现象
- status=0 的记录积压达 90多万条
- 视频(video)积压约 4万条
- 图片(photo)积压约 400多万张
- 重要视频被大量图片堵在队列后面
- 4月18日之后新产生的记录全部 status=0,未能上传成功
根本原因
4月18日至5月6日期间,平台上传接口持续失败,导致所有新产生的记录都无法被标记为已上传(status=1),全部堆积在队列中。
数据分布
| 类型 | 积压数量 | 优先级 |
|---|---|---|
| photo(图片) | ~400万+ | 低 |
| video(视频) | ~4万 | 高(重要) |
| audio(音频) | 少量 | 中 |
上传逻辑
- 每1分钟执行一次
yiic V6CronTabStation putInformations - 每次最多上传 10条 索引记录
- 按 id 倒序排列(最新记录优先)
- 查询条件:
where status = 0(无其他过滤)
消化速度估算
- 每天最多上传:10条 × 1440次 = 14,400条
- 视频4万条全部传完需要:约3天
- 按当前队列长度,全部传完需要:60+天
解决方案
紧急处理:优先传视频
修改 V6CrontabStationCommand.php 第1548行,临时过滤只传视频:
// 原来
$where = "status = 0";
// 改成(只上传视频)
$where = "status = 0 AND type = 'video'";
操作步骤
- 修改代码:
V6CrontabStationCommand.php第1548行 - 运行BAT,
protected/bats/v6Command/putInformation.bat - 等待视频传完:约2-3天
相关配置
| 参数 | 值 | 说明 |
|---|---|---|
| maxInfomationCount | 10 | 单次上传最大索引数 |
| 上传间隔 | 1分钟 | 定时任务配置 |
| cloudIp | >0 | 平台地址,正常 |
| access_key | 有值 | 正常 |
关键代码位置
- 上传命令:
protected/commands/V6CrontabStationCommand.php - 上传方法:
actionPutInformations(第1541行) - 查询条件:第1548行
where status = 0 - 定时任务:
protected/bats/v6Command/putInformation.bat