From dfe8b8b44cd4a252c37c09ffcb501519c1999878 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Sun, 26 Mar 2023 01:50:00 +0100 Subject: [PATCH] bicep: added postgres settings --- hosts/bicep/services/postgres.nix | 67 ++++++++++++++++++++++++++++++- 1 file changed, 66 insertions(+), 1 deletion(-) diff --git a/hosts/bicep/services/postgres.nix b/hosts/bicep/services/postgres.nix index 4e95fa8e..ad4d7d32 100644 --- a/hosts/bicep/services/postgres.nix +++ b/hosts/bicep/services/postgres.nix @@ -1,6 +1,71 @@ -{ ... }: +{ pkgs, ... }: { services.postgresql = { enable = true; + enableTCPIP = true; + + authentication = pkgs.lib.mkOverride 10 '' + local all all trust + host all all 127.0.0.0/8 trust + host all all ::1/128 trust + host all all 241.129.241.128/25 + ''; + + # Hilsen https://pgconfigurator.cybertec-postgresql.com/ + settings = { + # Connectivity + max_connections = 500; + superuser_reserved_connections = 3; + + # Memory Settings + shared_buffers = "2048 MB"; + work_mem = "32 MB"; + maintenance_work_mem = "320 MB"; + effective_cache_size = "6 GB"; + effective_io_concurrency = 100; + random_page_cost = 1.25; + + # Monitoring + shared_preload_libraries = "pg_stat_statements"; + track_io_timing = true; + track_functions = "pl"; + + # Replication + wal_level = "replica"; + max_wal_senders = 0; + synchronous_commit = false; + + # Checkpointing: + checkpoint_timeout = "15 min"; + checkpoint_completion_target = 0.9; + max_wal_size = "1024 MB"; + min_wal_size = "512 MB"; + + # WAL writing + wal_compression = true; + wal_buffers = -1; + + # Background writer + bgwriter_delay = "200ms"; + bgwriter_lru_maxpages = 100; + bgwriter_lru_multiplier = 2.0; + bgwriter_flush_after = 0; + + # Parallel queries: + max_worker_processes = 8; + max_parallel_workers_per_gather = 4; + max_parallel_maintenance_workers = 4; + max_parallel_workers = 8; + parallel_leader_participation = true; + + # Advanced features + enable_partitionwise_join = true; + enable_partitionwise_aggregate = true; + jit = true; + max_slot_wal_keep_size = "1000 MB"; + track_wal_io_timing = true; + maintenance_io_concurrency = 100; + wal_recycle = true; + }; }; }