configuring-serverless-clients

Configure PrismaClient with a global singleton and connection_limit=1 for serverless environments.

Updated Nov 21, 2025
One-click install
npx skills add https://github.com/djankies/claude-configs --skill configuring-serverless-clients
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: configuring-serverless-clients
Source: https://github.com/djankies/claude-configs/tree/main/prisma-6/skills/configuring-serverless-clients
Command: npx skills add https://github.com/djankies/claude-configs --skill configuring-serverless-clients

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Serverless environments can exhaust DB connections if each function creates its own pool. This Skill guides serverless-ready PrismaClient configuration, including a per-instance connection limit and a global singleton pattern.

Core Features & Use Cases

  • Per-instance connection_limit=1 to prevent pool exhaustion.
  • Global singleton patterns to reuse PrismaClient across invocations.
  • Optional PgBouncer guidance for very high concurrency.

Quick Start

Create a single lib/prisma.ts singleton, set DATABASE_URL with connection_limit=1, and reuse the client across handlers.

Frequently Asked Questions about configuring-serverless-clients

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent database connection pool exhaustion in serverless functions?

Connection pool exhaustion occurs when each serverless invocation creates its own PrismaClient instance. Solve this by implementing a global singleton pattern in lib/prisma.ts that reuses a single PrismaClient across invocations, combined with setting connection_limit=1 in your DATABASE_URL to prevent per-instance pool overflow.

Can I use Prisma with AWS Lambda and Next.js without hitting P1017 errors?

Yes. Configure PrismaClient as a global singleton, set connection_limit=1 in DATABASE_URL, and avoid instantiating new PrismaClient() within handler functions. This pattern works across Next.js App Router, Pages Router, AWS Lambda, and Vercel, eliminating P1017 connection pool errors in multi-instance deployments.

What's the best way to configure PrismaClient for high-concurrency serverless environments?

Combine a global singleton PrismaClient with connection_limit=1 in DATABASE_URL and add pool_timeout settings. For very high concurrency (10+ concurrent requests), route connections through PgBouncer to manage connection pooling at the database proxy layer rather than within each function instance.

Do I need PgBouncer for serverless Prisma deployments?

PgBouncer is optional. A global singleton with connection_limit=1 handles most serverless scenarios. Use PgBouncer only when you need to support very high concurrency across many simultaneous invocations and want centralized connection pooling beyond per-instance limits.

How do I validate that my serverless PrismaClient configuration works across concurrent requests?

Test your configuration by simulating 10+ concurrent function invocations and verifying that all requests successfully reuse the singleton PrismaClient without connection exhaustion. Monitor for P1017 errors and confirm that connection_limit=1 and pool_timeout settings prevent pool starvation under load.