INCIDENT RUNBOOK
Fix: Database Pool Exhaustion Edge in Nuxt on AWS Lambda
Comprehensive architectural post-mortem and verified configuration patch for nuxt deployed in aws lambda production environments.
Automated Remediation ProtocolUpdated for 2026 Production
Facing database-pool-exhaustion-edge in CI/CD or runtime containers?
Review the verified configuration patches below. To automate incident triage and fine-tune your own internal agents, check out our production AI training datasets.
● Observed Terminal Error / Stack Trace
ERROR: database pool exhausted
at ConnectionManager.getConnection (/var/task/node_modules/pg/lib/connection.js:45:17)
at DatabasePool.acquireConnection (/var/task/node_modules/pg/lib/database.js:123:10)
at DatabasePool.query (/var/task/node_modules/pg/lib/database.js:156:14)
at API Route (/var/task/api/routes.js:12:15)Root Cause Analysis
The issue arises from the fact that Nuxt, by default, uses a connection pool to manage database connections. However, when deployed on AWS Lambda, the serverless nature of the platform means that the connection pool is not properly closed when the Lambda function is frozen or terminated, leading to an accumulation of open connections and eventual pool exhaustion. This is exacerbated by the fact that Lambda functions have a limited lifetime and may be reused, causing the connection pool to grow indefinitely.
● Configuration & Code Resolution
To fix this issue, we need to configure Nuxt to properly close the database connection pool when the Lambda function is terminated. We can achieve this by adding a `close` event listener to the Lambda function and closing the connection pool when the event is triggered. Here is an example of the updated `nuxt.config.js` file:
module.exports = {
// ... other configurations ...
lambda: {
handler: 'index.handler',
events: [
{
http: {
path: 'api/*',
method: 'GET',
integration: 'lambda',
request: {
passThrough: {
whenNoMatch: 'never'
}
},
// Add a close event listener to close the connection pool
close: () => {
const { Pool } = require('pg');
const pool = new Pool({
user: 'your_username',
host: 'your_host',
database: 'your_database',
password: 'your_password',
port: 5432,
});
pool.end();
}
}
}
]
}
};
We also need to update the `serverless.yml` file to include the `PGPOOL_MAX` environment variable to limit the connection pool size:
provider:
name: aws
runtime: nodejs14.x
environment:
PGPOOL_MAX: 10Verification & Build Command
To verify the resolution, run the following command to deploy the updated Nuxt application to AWS Lambda: `serverless deploy --verbose`. Then, use a tool like `aws lambda invoke` to simulate a large number of concurrent requests to the API route and verify that the connection pool is properly closed and the `database pool exhausted` error is no longer thrown.