user80
(贺煦修)
1
今天下午我见到的最多的报错就是
“database is locked (5) (SQLITE_BUSY)”
code: “pre_consume_token_quota_failed”
这是 New API在预扣费环节的 SQLite 数据库写锁冲突。 每次请求都要写 usage/quota 记账,数据库被锁住 → 预扣费失败 → 网关直接返回 403。所以 /v1/models 能读(只读不写库)但一发推理就挂,前两次各卡 30 秒,第三次直接超时。
就非常难绷
原因所在:SQLite 在并发下写锁冲突。并发一上来就容易 SQLITE_BUSY。
所以说准备换一个数据库了。
可能将会去更换为PostgreSQL / MySQL(哦
没想到离开wordpress这么多年后还能再见到这俩…PostgreSQL / MySQL 又双叒叕找上门了)
user80
(贺煦修)
2
PostgreSQL 迁移完成并验证通过。
当前配置(PostgreSQL 16 + Redis)
- 装好 PostgreSQL 16 + Redis 7 + pgloader,并按小机器调优 PG(shared_buffers 512MB、max_connections 200 等)。
- 用 pgloader 全量迁移:170 用户 / 94 tokens / 21 模型 / 7 厂商 / 4 订阅计划 / 共 103,107 行,0 错误。
- new-api 已切到 PG(SQL_DSN=postgres://[email protected]/newapi);旧 SQLite 保留为 one-api.db.pre-pg(可回滚)。
1 个赞
superai
(超级网管)
4
PostgreSQL 18 性能更强。
如果不是有特别大的并发,其实mysql更好用。
1 个赞