背景
排查 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
背景
排查 factor.timing/panel_score 超时时发现:data-service 在持续高并发下会饱和——连接被拒(
failed to reach data-service)或请求变慢。触发场景是 agent 横截面查询(多标的并发 backfill)+ 后台 live runner 轮询(BTC/BNB/A股/JP 并发) 叠加打满 data-service。已做(吸收瞬时,救不了持续)
DataClient.get_bars加了连接级有界重试(3 次 + 退避),吸收--reload重启窗口和秒级突发 blip(09e521b)。待做(容量/限流,二选一或组合)
/backfill/bars这类重操作限同时在飞数 + 排队,防被打满拒连。验证目标
agent + live runner 并发跑时,data-service 不再出现
DATA_SERVICE_UNREACHABLE,p95 延迟可控。相关
排障链:macro 并发取数 / yfinance 串行节流 / 横截面 IC 向量化 / DataClient 重试(见近期 factor/data commit)。
🤖 Generated with Claude Code