Skip to content

perf: 反混淆路径并发限流(默认 32) - #1

Merged
qitry merged 2 commits into
mainfrom
perf/no-cache-tuning
Aug 2, 2026
Merged

perf: 反混淆路径并发限流(默认 32)#1
qitry merged 2 commits into
mainfrom
perf/no-cache-tuning

Conversation

@leemwood

@leemwood leemwood commented Aug 2, 2026

Copy link
Copy Markdown
Member

改动

并发限流(本 PR 唯一改动)

src/api/deobfuscate.rs 新增全局 SemaphoreSPINYARN_MAX_CONCURRENCY,默认 32)。

无缓存模型下每个在途请求持有一整套版本表(~30MB),不限流时 N 并发 = N×30MB。限流把峰值内存钉死,突发流量时把 OOM 换成短暂排队。

默认值依据:LogShare 实际流量 ~1600 RPM(~27 req/s)× ~150ms/请求 ≈ 稳态并发 16,限 32 平时完全不触发,只在突发时生效。

Review 调整

原 PR 中的以下两项已回退:

  • ahash 查找表:实测仅 ~3% 收益,且膨胀依赖树,不划算
  • 移除响应 original 字段:breaking change,客户端暂不能同步适配,保留该字段

测试

  • cargo test:15/15 通过
  • bash test.sh:7/7 通过

- 三张全局查找表改用 ahash::AHashMap(实测 wall ~3% 收益,零成本保留)
- 新增并发限流信号量 GATE(SPINYARN_MAX_CONCURRENCY,默认 8):
  无缓存模型下每个在途请求持有一整套版本表(~30MB),限流把峰值内存
  钉在 N×单版本,防止突发流量 OOM。默认值依据 LogShare 实际流量
  ~1600 RPM × ~150ms/请求 ≈ 稳态并发 4,平时不触发
- 响应体移除 original 字段(breaking:客户端持有原文,大日志响应体减半),
  并消除 handler 中的 content.clone()

内存实测(Termux,1.21.11,232KB 日志):空闲 ~6MB;8 并发峰值 ~152MB,
突发结束回落 ~23MB;多版本交替请求 RSS 稳定 ~33-36MB,无驻留累积。
@qitry
qitry self-requested a review August 2, 2026 16:40
@qitry qitry changed the title perf: ahash 查找表 + 反混淆并发限流 + 精简响应体 perf: 反混淆路径并发限流(默认 32) Aug 2, 2026
@qitry
qitry merged commit c23ec8c into main Aug 2, 2026
1 check passed
@qitry
qitry deleted the perf/no-cache-tuning branch August 2, 2026 17:01

@qitry qitry left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

仅保留限流

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants