我们的数据库是 TiDB Cloud serverless,产品框架 Hono,使用 @drizzle-orm/tidb-serverless + @tidbcloud/serverless 连接数据库。产品部署在 Cloudflare Worker 上面。
之前一切正常,近期(不超过2周)突然遇到 worker memory exceed limits 错误,只有在生产环境上才会稳定复现。因为 Cloudflare Worker 只有 128MB 内存,本地内存比较富裕。经过一段时间的排查(二分切割法),最终基本确定是下面这段代码的问题:
const uid = (
await this.client
.insert(schema.users)
.values({
externalId: externalId,
firstName: firstName,
lastName: lastName,
email: email.toLowerCase(),
})
.$returningId()
)[0];
return uid.id;
将 $returningId() 去掉,然后单独写一个 query 就没问题了。
目前虽然问题已经解决,但我担心是不是没找对地方,所以发出来请教一下大家,看有没有人遇到过类似的问题,或者听说过类似的问题。