← 返回列表

SQLIlite看上去已经不适合我的AI站使用了

楼层 6浏览 113 赞 2发于 2026-10-04 02:52最后回复 2026-10-04 07:32 原帖
U
贺煦修@user80#12026-10-04 02:5276 阅

今天下午我见到的最多的报错就是

“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(哦:roll_eyes:没想到离开wordpress这么多年后还能再见到这俩…PostgreSQL / MySQL 又双叒叕找上门了)

U
贺煦修@user80#22026-10-04 03:491 赞 · 50 阅

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://newapi@127.0.0.1/newapi);旧 SQLite 保留为 one-api.db.pre-pg(可回滚)。
J
James@James#32026-10-04 04:0139 阅

上 postgresql 吧。

S
超级网管@superai#42026-10-04 06:01回复 #21 赞 · 31 阅

PostgreSQL 18 性能更强。
如果不是有特别大的并发,其实mysql更好用。

L
loc-yes@loc-yes#52026-10-04 07:1319 阅

会不会缺的是优化?

J
James@James#62026-10-04 07:32回复 #518 阅

sqlite适合单机使用,不适合线上并发的。

本页 6 楼,抓取于 2026-10-07 13:34