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'";

操作步骤

  1. 修改代码V6CrontabStationCommand.php 第1548行
  2. 运行BAT,protected/bats/v6Command/putInformation.bat
  3. 等待视频传完:约2-3天

相关配置

参数 说明
maxInfomationCount 10 单次上传最大索引数
上传间隔 1分钟 定时任务配置
cloudIp >0 平台地址,正常
access_key 有值 正常

关键代码位置

  • 上传命令:protected/commands/V6CrontabStationCommand.php
  • 上传方法:actionPutInformations (第1541行)
  • 查询条件:第1548行 where status = 0
  • 定时任务:protected/bats/v6Command/putInformation.bat