Add deployment traces for the JPpro proxy node, RackNerd origin hosts, catproxy boundary changes, local speed checks, and Sub2API rate-limit behavior. Keep remote secrets excluded while tracking sanitized nginx, compose, plan, and operational memory documents.
82 lines
3.5 KiB
Markdown
82 lines
3.5 KiB
Markdown
# 主站测速与限速核对
|
||
|
||
日期:2026-05-26
|
||
|
||
## 本机链路测速结论
|
||
|
||
从当前本机网络直连测试,`proxy.api.lilifamily.com` 经 JPpro 的 HTTPS 轻量请求比 `catproxy.lilifamily.com` 直连 3c4g 更快、更稳。
|
||
|
||
| 测试项 | 直连 `catproxy.lilifamily.com` | 经 JPpro `proxy.api.lilifamily.com` |
|
||
|---|---:|---:|
|
||
| `/health` 中位总耗时 | `0.763s` | `0.559s` |
|
||
| `/health` 成功率 | `5/6`,1 次 8s 超时 | `6/6` |
|
||
| 首页 `HEAD /` 中位耗时 | `1.817s` | `1.315s` |
|
||
| ICMP 平均延迟 | `238ms`,10% 丢包 | `57ms`,30% 丢包 |
|
||
|
||
测试命令使用 `curl --noproxy '*' -4`,本机未检测到 `HTTP_PROXY`、`HTTPS_PROXY`、`ALL_PROXY` 环境变量。ICMP 结果只作参考,HTTPS curl 结果优先。
|
||
|
||
## nginx 限速边界
|
||
|
||
- `catproxy.lilifamily.com`:3c4g 主站直连入口,当前没有 nginx `limit_req` / `limit_conn`,也没有 IP 白名单。
|
||
- `origin.proxy.api.lilifamily.com`:3c4g 回源入口,当前没有 nginx 速率限制;只允许 JPpro IP `151.242.164.72`,并校验 `X-Proxy-Ng-Token`。
|
||
- `proxy.api.lilifamily.com` / `jp.proxy.api.lilifamily.com`:JPpro 入口节点,有 nginx 按客户端 IP 的速率和并发限制。
|
||
|
||
JPpro 当前入口限制:
|
||
|
||
```nginx
|
||
limit_req_zone $binary_remote_addr zone=req_per_ip:20m rate=10r/s;
|
||
limit_req_zone $binary_remote_addr zone=auth_per_ip:10m rate=10r/m;
|
||
limit_conn_zone $binary_remote_addr zone=conn_per_ip:20m;
|
||
|
||
limit_conn conn_per_ip 50;
|
||
limit_req zone=req_per_ip burst=30 nodelay;
|
||
limit_req_status 429;
|
||
```
|
||
|
||
认证相关路径更严格:
|
||
|
||
```nginx
|
||
limit_req zone=auth_per_ip burst=3 nodelay;
|
||
limit_conn conn_per_ip 10;
|
||
```
|
||
|
||
## Sub2API 业务请求限速维度
|
||
|
||
Sub2API 的模型/API 网关业务请求不是按 IP 限速,而是按用户、用户+分组、API Key 额度做限制。
|
||
|
||
业务 RPM 计数 Redis key:
|
||
|
||
```text
|
||
rpm:u:{userID}:{minute}
|
||
rpm:ug:{userID}:{groupID}:{minute}
|
||
```
|
||
|
||
含义:
|
||
|
||
- 用户级 `rpm_limit`:同一用户全局每分钟请求数上限,`0` 表示不限。
|
||
- 分组级 `rpm_limit`:同一用户在某个分组内每分钟请求数上限,`0` 表示不限。
|
||
- 用户-分组 `rpm_override`:管理员可给某个用户在某个分组设置专属 RPM。
|
||
- API Key 的 `rate_limit_5h` / `rate_limit_1d` / `rate_limit_7d`:按费用消耗窗口限制,不是请求次数。
|
||
|
||
登录、注册、验证码等公开认证接口另有应用内 Redis 限速,维度是 `c.ClientIP()`。
|
||
|
||
## 生产快照
|
||
|
||
通过 Tabby profile `个人-US-racknerd-0526-3c4g` 查询 PostgreSQL 的非敏感限速字段:
|
||
|
||
- 用户 `zizi2000email@gmail.com`:`rpm_limit = 0`。
|
||
- 分组 `briqt`:`rpm_limit = 40`。
|
||
- 分组 `omm`:`rpm_limit = 100`。
|
||
- 分组 `free日卡-20刀`、`plus号池-使用余额`、`free周卡-每天50刀`、`free月卡-每天60刀`:`rpm_limit = 20`。
|
||
- 分组 `pro号池-使用余额`:`rpm_limit = 30`。
|
||
- API Key `briqt`:`rate_limit_5h = 300`,`rate_limit_1d = 500`。
|
||
- API Key `free`:`rate_limit_1d = 50`。
|
||
- API Key `omm`:窗口额度均为 `0`,表示不限。
|
||
|
||
后续如果用户反馈“主站请求被限速”,先判断入口:
|
||
|
||
1. 走 `proxy.api.lilifamily.com` 时,先看 JPpro nginx 是否返回 `429`。
|
||
2. 走 `catproxy.lilifamily.com` 时,跳过 nginx IP 限速排查,直接看 Sub2API 业务层错误。
|
||
3. 如果错误是 `rate_limit_exceeded`,优先查用户/分组 RPM 或 API Key 窗口额度。
|
||
4. 如果错误来自上游模型账号 `rate_limit_error`,那是账号池或上游限流,不是用户/IP 限流。
|