我已经在Next.js + Prisma + PostgreSQL上构建了这个应用,标准的堆栈,目前在Vercel + Supabase免费版上运行,因为我们还在测试阶段。想了想,还是应该在上线前进行负载测试,而不是简单地指望它能正常工作。

运行了一个k6测试,模拟100个并发用户访问我们的注册流程,结果……它崩溃了。不是“网站崩溃”的方式,但响应时间从300毫秒变成了4-5秒,针对了一部分请求。深入研究后发现,Supabase的免费版连接池器根本无法处理超过~25-30个并发数据库连接,才会开始排队。说实话,这在回头看起来是有道理的,它是免费版啊,但我想先证明一下,才花钱升级。

所以,现在我要试着弄清楚应该升级到什么,价格实在是有点烦人。升级到Supabase Pro +计算加注的费用是$125/月,只是数据库就够了,Vercel Pro再加上去就是$20/个用户。深入了解了DigitalOcean(应用平台 + 管理的PostgreSQL)后,发现价格大致相同,$110-120/月,没找到实惠的选择。

到目前为止,我想可能就没有什么神奇的便宜选项了,可能就是“真正的基础设施需要花钱”。但还是想问问大家,因为这个应用现在只有50个用户,我也不想花这么多钱。

有人在小规模(小于500个并发用户)上运行类似的应用,并且找到了比Vercel/Supabase Pro等级更便宜的方案吗?我很快看了一下Render,但似乎它们不提供pgbouncer,这在我刚刚测试中遇到的问题上就成问题了。还看了一下Railway,但基于使用量的计费让我有点担心,感觉可能会突然升高。

当然,也不反对自己托管,如果它值得花时间,我也不介意。但我不想自己托管一个问题,感觉这个规模的应用可能根本不需要。