Skip to content

Commit 9f2bfb8

Browse files
committed
Disable JIT by default in the Docker container
It's basically never faster in my testing, and often quite a bit slower.
1 parent 556f1ea commit 9f2bfb8

File tree

2 files changed

+16
-22
lines changed

2 files changed

+16
-22
lines changed

cmd/goatcounter/db.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,14 +301,6 @@ PostgreSQL notes:
301301
302302
PGDATABASE=goatcounter PGHOST=/var/run goatcounter -db 'postgresql'
303303
304-
You may want to consider lowering the "seq_page_cost" parameter; the query
305-
planner tends to prefer seq scans instead of index scans for some
306-
operations with the default of 4, which is much slower. I found that 1.1 is
307-
a fairly good setting, you can set it in your postgresql.conf file, or just
308-
for one database with:
309-
310-
alter database goatcounter set seq_page_cost=1.1
311-
312304
Converting from SQLite to PostgreSQL:
313305
314306
You can use pgloader (https://pgloader.io) to convert from a SQLite to

compose.yaml

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)