Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion server/database.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,31 @@ class Database {

let config = {};

const DEFAULT_MAX_POOL_CONNECTIONS = 10;
const maxPoolConnections = process.env.UPTIME_KUMA_DB_POOL_MAX_CONNECTIONS;
let parsedMaxPoolConnections = parseInt(maxPoolConnections);

if (
!maxPoolConnections ||
maxPoolConnections.trim() === "" ||
Number.isNaN(parsedMaxPoolConnections) ||
parsedMaxPoolConnections > 100 ||
// NOTE: We cap the pool size because MySQL/MariaDB connections are heavy.
// Each connection consumes memory and CPU, and too many cause severe slowdown.
// If you need higher concurrency, use a proxy like ProxySQL or MaxScale instead of raising this limit.
parsedMaxPoolConnections < 1
) {
parsedMaxPoolConnections = DEFAULT_MAX_POOL_CONNECTIONS;

// Only log if there was a UPTIME_KUMA_DB_POOL_MAX_CONNECTIONS defined
if (maxPoolConnections !== undefined) {
log.warn("db", `Max pool connections defaulted to ${DEFAULT_MAX_POOL_CONNECTIONS} because UPTIME_KUMA_DB_POOL_MAX_CONNECTIONS was invalid`);
}
}

let mariadbPoolConfig = {
min: 0,
max: 10,
max: parsedMaxPoolConnections,
idleTimeoutMillis: 30000,
};

Expand Down
Loading