production only deploy

This commit is contained in:
2025-04-19 20:25:43 +03:00
parent 11b08e0c3d
commit d70c952cd9
11 changed files with 137 additions and 491 deletions

View File

@@ -1,62 +0,0 @@
# PostgreSQL Development Configuration File
# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'
max_connections = 50
password_encryption = scram-sha-256
ssl = off
# RESOURCE USAGE
shared_buffers = 64MB
work_mem = 4MB
maintenance_work_mem = 32MB
effective_cache_size = 1GB
max_worker_processes = 4
max_parallel_workers_per_gather = 1
max_parallel_workers = 4
# WRITE-AHEAD LOG
wal_level = minimal
max_wal_size = 512MB
min_wal_size = 40MB
checkpoint_timeout = 5min
checkpoint_completion_target = 0.9
# QUERY TUNING
random_page_cost = 4.0
effective_io_concurrency = 1
default_statistics_target = 100
# LOGGING
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_duration_statement = 250
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_error_verbosity = verbose
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'all'
# AUTOVACUUM
autovacuum = on
log_autovacuum_min_duration = 250
autovacuum_max_workers = 2
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
# CLIENT CONNECTION DEFAULTS
datestyle = 'iso, mdy'
timezone = 'UTC'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'

View File

@@ -1,75 +0,0 @@
# PostgreSQL Production Configuration File
# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'
max_connections = 200
password_encryption = scram-sha-256
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
# RESOURCE USAGE
shared_buffers = 2GB
work_mem = 8MB
maintenance_work_mem = 256MB
effective_cache_size = 8GB
max_worker_processes = 12
max_parallel_workers_per_gather = 4
max_parallel_workers = 12
# WRITE-AHEAD LOG
wal_level = replica
max_wal_size = 2GB
min_wal_size = 1GB
checkpoint_timeout = 15min
checkpoint_completion_target = 0.9
archive_mode = on
archive_command = 'test ! -f /var/lib/postgresql/archive/%f && cp %p /var/lib/postgresql/archive/%f'
# REPLICATION
max_wal_senders = 10
wal_keep_size = 1GB
hot_standby = on
hot_standby_feedback = on
# QUERY TUNING
random_page_cost = 1.1
effective_io_concurrency = 200
default_statistics_target = 500
jit = on
# LOGGING
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 100MB
log_min_duration_statement = 1000
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = off
log_error_verbosity = default
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'none'
# AUTOVACUUM
autovacuum = on
log_autovacuum_min_duration = 1000
autovacuum_max_workers = 6
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.05
autovacuum_analyze_scale_factor = 0.025
# CLIENT CONNECTION DEFAULTS
datestyle = 'iso, mdy'
timezone = 'UTC'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'

View File

@@ -1,64 +0,0 @@
# PostgreSQL Staging Configuration File
# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'
max_connections = 100
password_encryption = scram-sha-256
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
# RESOURCE USAGE
shared_buffers = 256MB
work_mem = 6MB
maintenance_work_mem = 64MB
effective_cache_size = 2GB
max_worker_processes = 6
max_parallel_workers_per_gather = 2
max_parallel_workers = 6
# WRITE-AHEAD LOG
wal_level = replica
max_wal_size = 1GB
min_wal_size = 80MB
checkpoint_timeout = 5min
checkpoint_completion_target = 0.9
# QUERY TUNING
random_page_cost = 4.0
effective_io_concurrency = 2
default_statistics_target = 100
# LOGGING
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_duration_statement = 500
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = off
log_error_verbosity = default
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'mod'
# AUTOVACUUM
autovacuum = on
log_autovacuum_min_duration = 500
autovacuum_max_workers = 3
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
# CLIENT CONNECTION DEFAULTS
datestyle = 'iso, mdy'
timezone = 'UTC'
lc_messages = 'en_US.UTF-8'
lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'

View File

@@ -1,34 +1,47 @@
# PostgreSQL Configuration File
# This is the main configuration file that will be used by default
# PostgreSQL Production Configuration File for Proxmox LXC Container
# Optimized for production workloads
# CONNECTIONS AND AUTHENTICATION
listen_addresses = '*'
max_connections = 100
max_connections = 200 # Increased for production workloads
password_encryption = scram-sha-256
ssl = on
ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem'
ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key'
ssl_prefer_server_ciphers = on # Prefer server's cipher order
ssl_min_protocol_version = 'TLSv1.2' # Minimum TLS version
# RESOURCE USAGE
shared_buffers = 128MB
work_mem = 4MB
maintenance_work_mem = 64MB
effective_cache_size = 4GB
max_worker_processes = 8
max_parallel_workers_per_gather = 2
max_parallel_workers = 8
# RESOURCE USAGE (Optimized for 16GB RAM, 4 CPUs)
shared_buffers = 4GB # 25% of system memory for 16GB RAM
work_mem = 64MB # Increased for better query performance
maintenance_work_mem = 1GB # Increased for faster maintenance operations
effective_cache_size = 12GB # 75% of available memory
max_worker_processes = 8 # 2 × CPU cores
max_parallel_workers_per_gather = 4 # 1 per CPU core
max_parallel_workers = 8 # Equal to max_worker_processes
huge_pages = try # Try to use huge pages if available
# WRITE-AHEAD LOG
wal_level = replica
max_wal_size = 1GB
min_wal_size = 80MB
checkpoint_timeout = 5min
checkpoint_completion_target = 0.9
wal_level = replica # Enables WAL archiving and replication
max_wal_size = 2GB # Increased for production
min_wal_size = 1GB # Increased for production
checkpoint_timeout = 15min # Increased to reduce checkpoint frequency
checkpoint_completion_target = 0.9 # Spread checkpoint I/O over more time
wal_buffers = 16MB # Increased for better performance
synchronous_commit = on # Ensures data durability
# QUERY TUNING
random_page_cost = 4.0
effective_io_concurrency = 2
default_statistics_target = 100
random_page_cost = 1.1 # Optimized for SSD storage
effective_io_concurrency = 200 # Increased for SSD storage
default_statistics_target = 500 # Increased for better query plans
jit = on # Enable JIT compilation for better performance
track_io_timing = on # Track I/O timing for better insights
# REPLICATION
max_wal_senders = 10 # Allow up to 10 WAL sender processes
wal_keep_size = 1GB # Keep at least 1GB of WAL segments
hot_standby = on # Allow queries during recovery
hot_standby_feedback = on # Prevent query conflicts with standby servers
# LOGGING
log_destination = 'stderr'
@@ -37,23 +50,32 @@ log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_truncate_on_rotation = off
log_rotation_age = 1d
log_rotation_size = 10MB
log_min_duration_statement = 1000
log_rotation_size = 100MB # Increased for production
log_min_duration_statement = 1000 # Log slow queries (1 second)
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = off
log_error_verbosity = default
log_line_prefix = '%m [%p] %q%u@%d '
log_statement = 'none'
log_statement = 'none' # Don't log statements in production
log_temp_files = 0 # Log all temp file usage
# AUTOVACUUM
autovacuum = on
log_autovacuum_min_duration = 1000
autovacuum_max_workers = 3
autovacuum_max_workers = 6 # Increased for production
autovacuum_naptime = 1min
autovacuum_vacuum_threshold = 50
autovacuum_analyze_threshold = 50
autovacuum_vacuum_scale_factor = 0.05 # More aggressive vacuuming
autovacuum_analyze_scale_factor = 0.025 # More aggressive analyzing
# STATISTICS
track_activities = on
track_counts = on
track_functions = all # Track function statistics
track_activity_query_size = 4096 # Increased for better monitoring
# CLIENT CONNECTION DEFAULTS
datestyle = 'iso, mdy'
@@ -63,3 +85,12 @@ lc_monetary = 'en_US.UTF-8'
lc_numeric = 'en_US.UTF-8'
lc_time = 'en_US.UTF-8'
default_text_search_config = 'pg_catalog.english'
# LOCKS AND DEADLOCKS
deadlock_timeout = 1s # Check for deadlocks after 1s
# DEVELOPER OPTIONS
debug_print_parse = off
debug_print_rewritten = off
debug_print_plan = off
debug_pretty_print = on