Repository navigation
新增
渠道自动禁用可整体关闭,且默认关闭
- 全局:新增热配置
gateway.auto_disable_upstreams,默认false—— 默认不自动禁用任何渠道,失败只记日志并照常重试 / 故障转移;需要熔断的部署到「系统设置 → 路由策略」里手动打开,改完即时生效。 - 渠道级:上游
extra.auto_disable=false(渠道表单「运行」区的「自动禁用」开关,列表显示「不自动禁用」标签),只对该渠道生效。 - 关闭后的语义 = 完全不熔断:不计连续失败、不冷却、不半开探活,不写
disabled_by='auto'/cooldown_until,候选链不再因熔断跳过该渠道。手动禁用仍优先级最高,凭证失效隔离(token 失效跳过 5 分钟)不受影响。 - 关掉开关时立即解除历史自动禁用状态:关闭全局会全量解除,关闭单个渠道只解除该渠道,渠道随即回到候选池。
内存相关参数改为用户可配置(默认值全部不变)
gateway.max_body_mb(默认 100 MiB,系统设置「请求处理」):单请求体上限。请求体整体读入内存后解析,调低可压低大 body(多图 base64)请求的内存峰值,代价是超大请求返回 413。仅启动时生效。gateway.argon2_memory_kib(默认 19456 KiB = 19 MiB,系统设置「流量控制」):管理员密码 argon2 哈希的内存成本,即时生效,但只作用于新生成的哈希 —— 调低后需改一次密码才见效(登录校验按库里哈希自带的参数分配)。范围 8192–1048576。database.max_connections(默认 16,系统设置「日志与审计」):PostgreSQL 连接池上限。启动类键,保存后下次启动生效;优先级 envNEXTAPI_DB_MAX_CONNECTIONS> UI > YAML。
本地构建镜像的实测对照(16 核宿主机、全新 PostgreSQL 数据卷,容器口径):
| 场景 | 默认配置 | 调优(argon2 8 MiB / 请求体 16 MiB / 连接池 8) |
|---|---|---|
| 空载 | 3.3 MiB | 3.2 MiB |
| 登录一次 | 22.5 MiB | 3.3 MiB |
| 登录三次 | 60.6 MiB | 19.3 MiB |
| 后台访问后 | 60.7 MiB | 27.3 MiB |
登录后内存偏高的原因是 argon2 的工作内存被 glibc 留在堆里(默认一次 19 MiB),调低该值即可显著降低常驻。
修复
- 请求体超限的 413 文案此前写死「请求体超过大小限制 100MiB」,现跟随生效的
gateway.max_body_mb输出(如「…16 MiB」)。 - README 重写,并新增「性能与资源占用」一节(默认与调优两组实测数据、口径说明、启动耗时、镜像与空库体积)。
- 启动类配置键现在接受数字(此前只收字符串),数值键做整数与范围校验、落库仍存字符串;设置页数值控件正确回显字符串值。
验证
- 单测 453 → 457;
cargo fmt --check、clippy(0 告警)、vue-tsc --noEmit、npm run build(含 check-api-paths)全绿。 - 端到端(真实进程 + 临时库):UI 保存连接池 3 后并发 10 个请求,PostgreSQL 连接数停在 3;改密后库里哈希参数为
m=8192,t=2,p=1;上限 1 MiB 时 2 MiB 请求返回413 请求体超过大小限制 1 MiB。 - 本地构建镜像按默认 / 调优两套配置复测内存(数据见上表与 README)。
镜像:ghcr.io/snnh/nextapi:0.3.12(多架构 amd64 / arm64,同时打 0.3 与 latest)
升级:docker compose pull && docker compose up -d