@@ -11,28 +11,30 @@ services:
1111 ports : ['127.0.0.1:5432:5432']
1212 volumes : ['postgres-data:/var/lib/postgresql/data']
1313 shm_size : ' 1gb'
14+ environment :
15+ ' POSTGRES_USER ' : ' goatcounter'
16+ ' POSTGRES_PASSWORD ' : ' goatcounter'
17+ ' POSTGRES_DATABASE ' : ' goatcounter'
1418 command : [
15- ' -c' , 'shared_buffers=1GB',
16- ' -c' , 'effective_cache_size=10GB',
17- ' -c' , 'maintenance_work_mem=500MB',
18- ' -c' , 'work_mem=200MB',
19- ' -c' , 'wal_level=minimal',
19+ ' -c' , 'shared_preload_libraries=pg_stat_statements',
20+ ' -c' , 'default_statistics_target=1000',
21+
22+ ' -c' , 'wal_level=minimal', # WAL
2023 ' -c' , 'max_wal_senders=0',
2124 ' -c' , 'min_wal_size=256MB',
2225 ' -c' , 'max_wal_size=4GB',
23- ' -c' , 'random_page_cost=1.5',
24- ' -c' , 'effective_io_concurrency=256',
25- ' -c' , 'default_statistics_target=1000',
26- ' -c' , 'max_parallel_workers_per_gather=4',
26+ ' -c' , 'shared_buffers=1GB', # Memory settings
27+ ' -c' , 'effective_cache_size=10GB',
28+ ' -c' , 'maintenance_work_mem=500MB',
29+ ' -c' , 'work_mem=200MB',
30+ ' -c' , 'max_parallel_workers_per_gather=4', # Run queries in parallel
2731 ' -c' , 'max_parallel_maintenance_workers=4',
2832 ' -c' , 'max_worker_processes=8',
2933 ' -c' , 'max_parallel_workers=8',
30- ' -c' , 'shared_preload_libraries=pg_stat_statements',
34+ ' -c' , 'random_page_cost=1.5', # Most people use an SSD, and random page access is faster than HDDs.
35+ ' -c' , 'effective_io_concurrency=256', # SSDs are better at concurrent access.
36+ ' -c' , 'jit=off', # Almost always slower.
3137 ]
32- environment :
33- ' POSTGRES_USER ' : ' goatcounter'
34- ' POSTGRES_PASSWORD ' : ' goatcounter'
35- ' POSTGRES_DATABASE ' : ' goatcounter'
3638
3739 # Don't start GoatCounter by default, but only if asked for with:
3840 # docker compose up -d goatcounter-sqlite
0 commit comments