Initial commit

This commit is contained in:
2025-06-22 00:01:22 +03:00
parent fd70166cf6
commit 033b80bfad
153 changed files with 26874 additions and 1 deletions

45
lib/connection-monitor.ts Normal file
View File

@@ -0,0 +1,45 @@
import { getPoolStats } from "./database"
let monitoringInterval: NodeJS.Timeout | null = null
export function startConnectionMonitoring() {
if (monitoringInterval) {
return // Already monitoring
}
console.log("Starting database connection monitoring...")
monitoringInterval = setInterval(() => {
const stats = getPoolStats()
if (stats) {
const utilizationRate = (stats.totalConnections - stats.freeConnections) / stats.connectionLimit
console.log(
`DB Pool Stats: ${stats.totalConnections}/${stats.connectionLimit} total, ${stats.freeConnections} free, ${stats.acquiringConnections} acquiring (${Math.round(utilizationRate * 100)}% utilization)`,
)
// Warn if utilization is high
if (utilizationRate > 0.8) {
console.warn("⚠️ High database connection utilization detected!")
}
// Warn if many connections are waiting
if (stats.acquiringConnections > 3) {
console.warn("⚠️ Many connections waiting for pool!")
}
}
}, 30000) // Every 30 seconds
}
export function stopConnectionMonitoring() {
if (monitoringInterval) {
clearInterval(monitoringInterval)
monitoringInterval = null
console.log("Stopped database connection monitoring")
}
}
// Auto-start monitoring in production
if (process.env.NODE_ENV === "production") {
startConnectionMonitoring()
}