The real serverless compute to database connection problem, solved
Blog post from Vercel
The belief that serverless computing requires more database connections is a myth; the actual problem lies in connection leaks when functions are suspended. This issue arises because, in serverless environments, the lifecycle of virtual machines causes idle timers to never fire, leading to leaked connections until the server-side pooler closes them due to its own timeout. This can be problematic in environments with connection limits, such as Supabase's free plan. Traditional serverless solutions, like AWS Lambda, lack a practical remedy without significant trade-offs, such as increased latency from closing connections after each request. However, modern serverless platforms like Vercel Fluid Compute address this issue by using lifecycle hooks to ensure connections are properly released, thus preventing leaks with minimal added cost and no impact on latency. Best practices include setting low connection idle timeouts, defining connection pools globally, avoiding setting maximum pool size to one, and employing rolling releases to manage database connections effectively.