Files
nodeMap/utils/mysqlPool.js
ISA 416c71ef6c feat: DNS-Server-Integration überprüft und lokale Datenbankverbindung optimiert
- `.env.local` angepasst, um den Datenbank-Host (DB_HOST) auf `127.0.0.1` zu setzen.
- `mysqlPool.js` aktualisiert, um eine Verbindung zur lokalen Datenbank über `127.0.0.1` zu ermöglichen.
- DNS-Server erfolgreich getestet, um Webseitenerreichbarkeit über DNS-Namen sicherzustellen.
- Sicherstellung, dass die Anwendung über `test.mytest.local` korrekt funktioniert.
2024-12-03 09:38:33 +01:00

53 lines
1.7 KiB
JavaScript

import mysql from "mysql2/promise";
// Variablen für den Singleton-Pool
let cachedPool;
let connectionCount = 0; // Zähler für die aktiven Verbindungen
// Funktion zum Abrufen des Pools
function getPool() {
if (!cachedPool) {
cachedPool = mysql.createPool({
host: "127.0.0.1",
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
port: process.env.DB_PORT,
connectionLimit: 20, // Setze ein Limit für gleichzeitige Verbindungen
waitForConnections: true,
queueLimit: 10, // Warteschlangenlimit für Verbindungen
connectTimeout: 5000, // Timeout für Verbindungsversuche (5 Sekunden)
acquireTimeout: 10000, // Timeout für Verbindungsanforderungen aus dem Pool (10 Sekunden)
idleTimeout: 60000, // 1 Minute
});
// Ereignisse für das Protokollieren der Verbindungsstatistiken
cachedPool.on("acquire", () => {
connectionCount++;
console.log(`[ACQUIRE] Active connections: ${connectionCount}`);
});
cachedPool.on("release", () => {
connectionCount--;
console.log(`[RELEASE] Active connections: ${connectionCount}`);
});
cachedPool.on("enqueue", () => {
console.log(`[ENQUEUE] Waiting for available connection slot.`);
});
}
return cachedPool;
}
// Optionale Funktion zum Schließen aller Verbindungen im Pool (manuell aufzurufen)
export function closePool() {
if (cachedPool) {
cachedPool.end(() => {
console.log("All pool connections closed.");
});
cachedPool = null; // Setze den Pool auf null, um sicherzustellen, dass er neu erstellt wird, falls benötigt.
}
}
export default getPool;