From fda611d249173bdea5b0f3bbb2b1e534e516f0e3 Mon Sep 17 00:00:00 2001 From: liquidrinu Date: Sat, 24 May 2025 14:05:35 +0200 Subject: [PATCH] updated database config --- chart/templates/backend-migration.job.yaml | 2 -- chart/templates/postgres-configmap.yaml | 37 ++++++++++++++++++++-- chart/values.prod.template.yaml | 4 ++- mikro-orm.config.ts | 16 ++++++++++ 4 files changed, 54 insertions(+), 5 deletions(-) diff --git a/chart/templates/backend-migration.job.yaml b/chart/templates/backend-migration.job.yaml index 29793b7..d51fd30 100644 --- a/chart/templates/backend-migration.job.yaml +++ b/chart/templates/backend-migration.job.yaml @@ -24,6 +24,4 @@ spec: - name: {{ $key }} value: "{{ $val }}" {{- end }} - - name: POSTGRES_HOSTNAME - value: "{{ .Values.backend.env.POSTGRES_HOST }}" restartPolicy: Never diff --git a/chart/templates/postgres-configmap.yaml b/chart/templates/postgres-configmap.yaml index e2452f6..da07a72 100644 --- a/chart/templates/postgres-configmap.yaml +++ b/chart/templates/postgres-configmap.yaml @@ -10,9 +10,42 @@ data: host all all ::1/128 trust host all all 0.0.0.0/0 md5 postgresql.conf: | + # Connection Settings listen_addresses = '*' max_connections = 100 + + # Memory Settings shared_buffers = 128MB - dynamic_shared_memory_type = posix + work_mem = 4MB + maintenance_work_mem = 64MB + + # Write Ahead Log max_wal_size = 1GB - min_wal_size = 80MB \ No newline at end of file + min_wal_size = 80MB + checkpoint_timeout = 5min + checkpoint_completion_target = 0.9 + + # Query Planner + random_page_cost = 1.1 + effective_cache_size = 4GB + + # Autovacuum + autovacuum = on + autovacuum_max_workers = 3 + autovacuum_naptime = 1min + autovacuum_vacuum_threshold = 50 + autovacuum_analyze_threshold = 50 + + # Logging + log_min_duration_statement = 1000 + log_checkpoints = on + log_connections = on + log_disconnections = on + log_lock_waits = on + log_temp_files = 0 + log_autovacuum_min_duration = 0 + + # Other Settings + dynamic_shared_memory_type = posix + effective_io_concurrency = 200 + default_statistics_target = 100 \ No newline at end of file diff --git a/chart/values.prod.template.yaml b/chart/values.prod.template.yaml index 2e7e235..6a2649c 100644 --- a/chart/values.prod.template.yaml +++ b/chart/values.prod.template.yaml @@ -27,7 +27,7 @@ backend: cpu: "500m" memory: "512Mi" env: - POSTGRES_HOST: postgres-service + POSTGRES_HOSTNAME: postgres-service POSTGRES_PORT: "5432" POSTGRES_NAME: fusero-db POSTGRES_USER: prod_admin @@ -65,3 +65,5 @@ postgres: cpu: "500m" memory: "512Mi" password: "" + user: "prod_admin" + dbName: "fusero-db" diff --git a/mikro-orm.config.ts b/mikro-orm.config.ts index 34cee35..e4701f8 100644 --- a/mikro-orm.config.ts +++ b/mikro-orm.config.ts @@ -3,12 +3,21 @@ import { PostgreSqlDriver } from '@mikro-orm/postgresql'; import { Migrator } from '@mikro-orm/migrations'; import dotenv from 'dotenv'; +// Load environment variables if not in Kubernetes if (process.env.KUBERNETES_SERVICE_HOST === undefined) { dotenv.config({ override: true }); } const isProduction = process.env.NODE_ENV === 'production'; +// Validate required environment variables +const requiredEnvVars = ['POSTGRES_NAME', 'POSTGRES_USER', 'POSTGRES_PASSWORD']; +const missingEnvVars = requiredEnvVars.filter(envVar => !process.env[envVar]); + +if (missingEnvVars.length > 0 && isProduction) { + throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}`); +} + const config: Options = { driver: PostgreSqlDriver, entities: [ @@ -43,6 +52,13 @@ const config: Options = { snapshot: true, emit: 'ts', }, + // Add connection pool settings + pool: { + min: 2, + max: 10, + idleTimeoutMillis: 30000, + acquireTimeoutMillis: 30000, + }, }; export default config;