Skip to content

data-service 持续高并发容量:饱和导致连接失败/变慢 #107

Description

@mirror29

背景

排查 factor.timing/panel_score 超时时发现:data-service 在持续高并发下会饱和——连接被拒(failed to reach data-service)或请求变慢。触发场景是 agent 横截面查询(多标的并发 backfill)+ 后台 live runner 轮询(BTC/BNB/A股/JP 并发) 叠加打满 data-service。

已做(吸收瞬时,救不了持续)

  • factor DataClient.get_bars 加了连接级有界重试(3 次 + 退避),吸收 --reload 重启窗口和秒级突发 blip(09e521b)。
  • 但重试救不了持续过载:若 data-service 长时间被打满,重试也会一起失败。

待做(容量/限流,二选一或组合)

  • 生产侧限流:给 factor→data 的并发取数(macro 18 序列 gather、panel N 标的 gather)加 semaphore 上限(如 6-8),避免单次请求就对 data 发起几十个并发。
  • data-service 侧并发闸:对 /backfill/bars 这类重操作限同时在飞数 + 排队,防被打满拒连。
  • 背景 live runner 节流:轮询多标的时错峰/限速,别和 agent 抢。
  • (可选)扩容 / 连接池调优。

验证目标

agent + live runner 并发跑时,data-service 不再出现 DATA_SERVICE_UNREACHABLE,p95 延迟可控。

相关

排障链:macro 并发取数 / yfinance 串行节流 / 横截面 IC 向量化 / DataClient 重试(见近期 factor/data commit)。

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions