QSSS_new / docs /hf_optimization_plan.md
misonL's picture
特性:实现对话框、表单、输入框、标签、下拉菜单、分隔线、骨架屏、滑块、表格、文本区域的 UI 组件
c78ce9e
|
Raw
History Blame Contribute Delete
6.12 kB

HF Space 部署优化方案

根据HF Space部署约束,本方案旨在对现有系统进行重构优化,以提高性能、降低资源消耗并增强可维护性。

1. 内存缓存设计

  • 目标:将后端 FastAPICacheRedisBackend 切换到基于内存的LRU缓存,并为现有内存缓存(如 backend/data/data_service_memory.py 中的 data_cache)设置上限和自动清理机制,以更好地支持新华财经数据的高效处理。
  • 具体步骤
    • 评估现有缓存使用情况
      • 检查 backend/app/main.pyFastAPICache 的使用范围,确定哪些API端点使用了缓存。
      • 检查 backend/data/data_service_memory.pydata_cache 的使用情况,了解其存储的数据类型和访问模式。
    • 引入LRU缓存库
      • 对于Python后端,考虑使用 functools.lru_cache 或第三方库(如 cachetools)来实现LRU缓存。
    • 修改 FastAPICache 配置
      • backend/app/main.py 中,将 FastAPICache.init 的后端从 RedisBackend 更改为内存LRU后端。
      • 配置LRU缓存的最大容量,防止内存溢出。
    • 增强现有内存缓存
      • backend/data/data_service_memory.py 中,如果 data_cache 不是LRU实现,则将其替换为LRU缓存,并设置缓存上限。
      • 实现自动清理机制,例如基于时间或大小的清理策略。

2. 轻量监控方案

  • 目标:在不引入额外监控服务的情况下,提供基本的系统健康和性能洞察。
  • 具体步骤
    • 内置健康检查API端点
      • backend/app/api/v1/api.py 或新建一个 health.py 文件中,添加一个 /health/status API端点。该端点应返回简单的状态信息(如 {"status": "ok"}),并可选择包含内存使用情况、CPU负载等基本指标。
      • 集成 backend/app/services/data_monitor.py 模块,将其提供的 /market-data/status API纳入整体健康检查和状态报告。
    • 实时日志流分析
      • 确保所有关键操作和错误都通过标准日志库(如Python的 logging 模块)输出到控制台。
      • HF Space会自动捕获这些日志,用户可以通过HF Space界面查看实时日志流。
      • 在日志中包含关键信息,如请求处理时间、缓存命中率等,以便进行简单的日志分析。
    • 简易状态仪表盘(基于内存数据)
      • 在后端维护一些内存中的统计数据,例如:
        • API请求计数
        • 缓存命中/未命中次数
        • 内存使用峰值
      • 通过一个新的API端点(例如 /metrics)暴露这些内存中的统计数据,供用户或简单的脚本查询。
      • 前端可以开发一个简单的页面来展示这些数据,或者用户可以直接通过 curl 命令获取。

3. 代理池适配

  • 目标:优化代理池的使用,使其适应HF Space的资源限制,并增加内存使用监控和动态调整策略。
  • 具体步骤
    • 精简代理池容量
      • backend/app/core/config.py 中配置 PROXY_POOL,并确保其容量限制在10个以内,以适应HF Space的资源限制。
    • 增加内存使用监控
      • backend/app/utils/proxy_manager.py 中集成内存使用情况的检查。当代理池的内存使用量接近预设阈值时,触发警告日志。
    • 动态调整策略
      • backend/app/utils/proxy_manager.py 中实现动态调整机制,例如:
        • 如果代理使用失败率高,则尝试更换代理。
        • 如果系统内存紧张,则暂时减少活跃代理的数量。
        • 利用 tenacity 库的重试机制,增强代理的健壮性。

4. HF构建流程

  • 目标:优化Docker镜像大小和HF Space的健康检查配置,并引入内存使用预警机制。
  • 具体步骤
    • 优化Docker镜像大小
      • 检查 Dockerfile,采用多阶段构建(Multi-stage build)来减小最终镜像大小,并确保正确安装所有必要的依赖(包括新华财经数据集成所需的 httpx, fake_useragent, tenacity, feedparser 等)。
      • 移除不必要的构建依赖和运行时依赖。
      • 使用更小的基础镜像(如 alpine 版本)。
      • 清理缓存和临时文件。
    • 配置HF Space健康检查
      • Dockerfile 或 HF Space 的配置中,指定上一步创建的健康检查API端点(例如 /health)作为HF Space的健康检查路径。
      • 配置健康检查的频率和超时时间。
    • 内存使用预警机制
      • 在应用程序启动时,记录初始内存使用量。
      • 定期(例如每隔几分钟)检查当前内存使用量,并与预设的阈值进行比较。
      • 如果内存使用量超过阈值,则通过日志输出警告信息,提示可能存在内存泄漏或资源使用过高。
      • 考虑使用Python的 resource 模块或 psutil 库来获取内存信息。

方案概览图

graph TD
    A[当前系统] --> B{HF Space 部署约束}

    subgraph 内存缓存设计
        B --> C[LRU 内存缓存替代 Redis]
        C --> D[设置缓存上限]
        C --> E[实现自动清理机制]
    end

    subgraph 轻量监控方案
        B --> F[内置健康检查 API]
        F --> G[实时日志流分析]
        F --> H[简易状态仪表盘]
    end

    subgraph 代理池适配
        B --> I[精简代理池容量]
        I --> J[增加内存使用监控]
        I --> K[动态调整策略]
    end

    subgraph HF 构建流程
        B --> L[优化 Docker 镜像大小]
        L --> M[配置 HF Space 健康检查]
        L --> N[内存使用预警机制]
    end

    C & D & E & F & G & H & I & J & K & L & M & N --> O[HF 特化优化方案]