mirror of
https://github.com/kjanat/livedash-node.git
synced 2026-01-16 12:12:09 +01:00
🎯 SESSION POOLING PERFORMANCE BREAKTHROUGH! ✅ Critical Issues Fixed: - Eliminated multiple PrismaClient instances across schedulers - Fixed connection pool exhaustion risk in processing modules - Implemented singleton pattern for all database connections - Added graceful shutdown and connection cleanup 🚀 Enhanced Pooling Features: - Dual-mode connection pooling (standard + enhanced) - PostgreSQL native pooling with @prisma/adapter-pg - Advanced connection monitoring and health checks - Configurable pool limits and timeouts via environment variables - Real-time connection statistics and metrics 📊 Performance Optimizations: - Single shared connection pool across all schedulers - Configurable connection limits (DATABASE_CONNECTION_LIMIT=20) - Idle timeout management (DATABASE_POOL_TIMEOUT=10) - Connection cycling and health validation - Process termination signal handling 🛠️ New Infrastructure: - lib/database-pool.ts - Advanced pooling configuration - app/api/admin/database-health/route.ts - Connection monitoring - Enhanced lib/prisma.ts with dual-mode support - Comprehensive documentation in docs/database-connection-pooling.md - Graceful shutdown handling in lib/schedulers.ts 🎛️ Environment Configuration: - USE_ENHANCED_POOLING=true for production optimization - DATABASE_CONNECTION_LIMIT for pool size control - DATABASE_POOL_TIMEOUT for idle connection management - Automatic enhanced pooling in production environments 📈 Expected Impact: - Eliminates connection pool exhaustion under load - Reduces memory footprint from idle connections - Improves scheduler performance and reliability - Enables better resource monitoring and debugging - Supports horizontal scaling with proper connection management Production-ready connection pooling with monitoring and health checks!
75 lines
1.7 KiB
JSON
75 lines
1.7 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.0.5/schema.json",
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"correctness": {
|
|
"noUnusedVariables": "error",
|
|
"noUnusedImports": "error"
|
|
},
|
|
"style": {
|
|
"useConst": "error",
|
|
"useTemplate": "error",
|
|
"noParameterAssign": "error",
|
|
"useAsConstAssertion": "error",
|
|
"useDefaultParameterLast": "error",
|
|
"useEnumInitializers": "error",
|
|
"useSelfClosingElements": "error",
|
|
"useSingleVarDeclarator": "error",
|
|
"noUnusedTemplateLiteral": "error",
|
|
"useNumberNamespace": "error",
|
|
"noInferrableTypes": "error",
|
|
"noUselessElse": "error"
|
|
},
|
|
"suspicious": {
|
|
"noExplicitAny": "warn",
|
|
"noArrayIndexKey": "warn"
|
|
},
|
|
"complexity": {
|
|
"noForEach": "off",
|
|
"noExcessiveCognitiveComplexity": {
|
|
"level": "error",
|
|
"options": { "maxAllowedComplexity": 15 }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"formatter": {
|
|
"enabled": true,
|
|
"formatWithErrors": false,
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineEnding": "lf",
|
|
"lineWidth": 80
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"jsxQuoteStyle": "double",
|
|
"quoteProperties": "asNeeded",
|
|
"trailingCommas": "es5",
|
|
"semicolons": "always",
|
|
"arrowParentheses": "always",
|
|
"bracketSpacing": true,
|
|
"bracketSameLine": false,
|
|
"quoteStyle": "double"
|
|
}
|
|
},
|
|
"json": {
|
|
"formatter": {
|
|
"enabled": true
|
|
}
|
|
},
|
|
"files": {
|
|
"includes": [
|
|
"app/**",
|
|
"lib/**",
|
|
"components/**",
|
|
"*.ts",
|
|
"*.tsx",
|
|
"*.js",
|
|
"*.jsx"
|
|
]
|
|
}
|
|
}
|