vGo.codes

“视频上传 S3”的其他连接信息

其他 .env 连接信息
 

# 服务器配置

SERVER_PORT=8081

SESSION_SECRET=change-me-in-production

# 视频处理

TEMP_DIR=./temp

UPLOAD_DIR=./uploads

# 上传/转码设置

MAX_CONCURRENT_UPLOADS=2

UPLOAD_QUEUE_SIZE=50

MAX_CONCURRENT_TRANSCODES=2

TRANSCODE_QUEUE_SIZE=50

# S3 上传设置

S3_UPLOADER_CONCURRENCY=2

S3_UPLOAD_MAX_RETRIES=3

S3_UPLOAD_BASE_DELAY_MS=500

S3_UPLOAD_MAX_DELAY_MS=8000

# 上传/下载重试设置

UPLOAD_DOWNLOAD_MAX_RETRIES=3

UPLOAD_DOWNLOAD_BASE_DELAY_MS=800

UPLOAD_DOWNLOAD_MAX_DELAY_MS=12000

注释:
 

配置来源

  • API: 在调用 LoadConfig() 时从 config/config.go 中读取 ( .env 文件或系统变量)。
  • Worker: 直接在 cmd/worker/main.go 中读取 env 用于 S3 组和重试加载— 使用 config.AppConfig。

1. 上传和转码队列(主要 API)

变量含义
MAX_CONCURRENT_UPLOADS同时处理 ProcessUpload 的 worker 数量。值 ≤ 0 被强制最小 2.
UPLOAD_QUEUE_SIZE队列 buffer 的深度。用尽 → 上传失败(上传队列已满….
MAX_CONCURRENT_TRANSCODES同时进行中的 HLS 转码 worker 数量 (ProcessVideoToHLS)。≤ 0 → 最小值2.
TRANSCODE_QUEUE_SIZE转码作业队列缓冲区。

提示:如果资源足够,请增加 MAX_*;增加 *_QUEUE_SIZE 以处理突发流量(可能需要更长的等待时间)。

2. S3(对 Worker 有明显影响)

变量WorkerAPI (web)
S3_UPLOADER_CONCURRENCY有:Uploader.Concurrency 和 HLS 文件并行上传限制。加载 AppConfig,但 UploadHLS/UploadFile 不使用 buildUploader → 几乎不适用。
S3_UPLOAD_MAX_RETRIES有:aws.Config.MaxRetries (SDK)。Helper 有,但未附加到当前的上传线程。
S3_UPLOAD_BASE_DELAY_MS, S3_UPLOAD_MAX_DELAY_MS单独的 S3 backoff 未使用;通用加载使用 UPLOAD_DOWNLOAD_ *。在 config/helper 中,但未由 UploadHLS/UploadFile 调用。

总之:worker 的 .env 中调整 S3_* 以影响 S3 上传和 SDK 重试。

3. 重试加载/网络 (API 和 Worker)

变量含义
UPLOAD_DOWNLOAD_MAX_RETRIES循环 0…MaxRetries → 最多 MaxRetries + 1 次尝试(例如 3 → 4 次)。
UPLOAD_DOWNLOAD_BASE_DELAY_MS基础延迟;backoff base × 2^attempt,有上限。
UPLOAD_DOWNLOAD_MAX_DELAY_MS重试之间的最大等待时间。
  • API (upload_service.go):加载源,重试瞬时错误。
  • 工人 (retryOperation): 类似退避,日志 重试… 尝试.

4. 快速检查清单

  • API: 并行和上传/转码队列;重试加载源。
  • 工人: S3_UPLOADER_CONCURRENCY, S3_UPLOAD_MAX_RETRIES; UPLOAD_DOWNLOAD_* 用于通用重试。
  • 注意: 将 MAX_CONCURRENT_TRANSCODES 与正在运行的二进制文件的 process 和 .env 文件对齐。