dotfiles/nixng/containers/hydra/postgresql.nix
magic_rb a92d44383d
Attempt to tune PSQL for Hydra
Signed-off-by: magic_rb <magic_rb@redalder.org>
2023-11-18 14:47:23 +01:00

75 lines
1.8 KiB
Nix

{
makeSystem,
nixpkgs,
}: let
inherit
(nixpkgs.lib)
singleton
;
in
makeSystem {
system = "x86_64-linux";
name = "nixng-hydra-postgresql";
inherit nixpkgs;
config = {
pkgs,
config,
...
}: {
config = {
dumb-init = {
enable = true;
type.services = {};
};
services.postgresql = {
enable = true;
package = pkgs.postgresql_12;
initialScript = "/secrets/init.sql";
enableTCPIP = true;
authentication = "host all all all md5";
config = {
# DB Version: 12
# OS Type: linux
# DB Type: mixed
# Total Memory (RAM): 1 GB
# CPUs num: 12
# Connections num: 512
# Data Storage: hdd
max_connections = 512;
shared_buffers = "256 MB";
effective_cache_size = "768 MB";
maintenance_work_mem = "64 MB";
checkpoint_completion_target = 0.9;
wal_buffers = "7864 kB";
default_statistics_target = 100;
random_page_cost = 4;
effective_io_concurrency = 2;
work_mem = "64 kB";
huge_pages = "off";
min_wal_size = "1 GB";
max_wal_size = "4 GB";
max_worker_processes = 12;
max_parallel_workers_per_gather = 4;
max_parallel_workers = 12;
max_parallel_maintenance_workers = 4;
};
ensureDatabases = ["hydra"];
ensureExtensions = {
"pg_trgm" = ["hydra"];
};
ensureUsers = singleton {
name = "hydra";
ensurePermissions = {
"DATABASE \"hydra\"" = "ALL PRIVILEGES";
};
};
};
};
};
}