Skip to content

v0.3.12

Latest

Choose a tag to compare

@snnh snnh released this 28 Sep 10:18
· 1 commit to main since this release

新增

渠道自动禁用可整体关闭,且默认关闭

  • 全局:新增热配置 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 连接池上限。启动类键,保存后下次启动生效;优先级 env NEXTAPI_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