Better distribute db connection pool amongst workers

This commit is contained in:
Dominic Ferrando
2026-07-18 02:39:25 -04:00
parent 98a13c67de
commit 8e2db22e21
3 changed files with 9 additions and 7 deletions
+2 -1
View File
@@ -1,12 +1,13 @@
import { CreateTableBuilder, Kysely, PostgresDialect, sql } from 'kysely';
import { type DB } from "./out/db";
import { Pool } from "pg";
import { env } from '../util';
import { env, WORKER_COUNT } from '../util';
export const db = new Kysely<DB>({
dialect: new PostgresDialect({
pool: new Pool({
connectionString: env.DATABASE_URL,
max: Math.max(1, Math.floor(+env.DATABASE_POOL_MAX / WORKER_COUNT))
}),
})
});
+3 -5
View File
@@ -1,11 +1,9 @@
import cluster from 'node:cluster'
import os from 'node:os'
import { env, log } from "./util";
import { log, WORKER_COUNT } from "./util";
if (cluster.isPrimary) {
const n = Math.min(os.availableParallelism(), +env.MAX_WORKER_PROCESSES);
log.info(`Starting ${n} worker processes`)
for (let i = 0; i < n; i++)
log.info(`Starting ${WORKER_COUNT} worker processes`)
for (let i = 0; i < WORKER_COUNT; i++)
cluster.fork()
} else {
await import('./server')
+4 -1
View File
@@ -1,6 +1,7 @@
import cluster from 'node:cluster';
import { createHash } from 'node:crypto';
import { pino } from 'pino';
import os from 'node:os'
export const log = pino({
level: Bun.env.LOG_LEVEL ?? "info",
@@ -21,11 +22,13 @@ export const env = {
AUTH_SECRET: requireEnv("AUTH_SECRET"),
ADMIN_PASSWORD: requireEnv("ADMIN_PASSWORD"),
DATABASE_URL: requireEnv("DATABASE_URL"),
MAX_WORKER_PROCESSES: requireEnv("MAX_WORKER_PROCESSES"),
DATABASE_POOL_MAX: requireEnv("DATABASE_POOL_MAX"),
MAX_WORKER_COUNT: requireEnv("MAX_WORKER_COUNT"),
NODE_ENV: optionEnv("NODE_ENV", "development"),
LOG_LEVEL: optionEnv("LOG_LEVEL", "info"),
};
export const WORKER_COUNT = Math.min(os.availableParallelism(), +env.MAX_WORKER_COUNT);
export const DEFAULT_NAME = "Default";
function requireEnv(key: string): string {