-
Notifications
You must be signed in to change notification settings - Fork 2
/
docker-compose.yml
59 lines (55 loc) · 2.17 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: '3'
#
# TimescaleDB production installation
#
# - Assumes ZFS based Ubuntu 22.04 Linux
#
# - Uses passthrough filesystem for /data and /logs
#
# - Assume 128GB RAM
#
services:
# Main database server for oracle and backend databases
# https://hub.docker.com/r/timescale/timescaledb
timescaledb-zfs:
container_name: timescaledb-zfs
image: timescale/timescaledb:2.7.2-pg14
# Assume firewalled + password POSTGRES_PASSWORD hardened
network_mode: host
# pq: could not resize shared memory segment. No space left on device
# https://stackoverflow.com/a/56754077/315168
shm_size: 1g
# https://github.com/timescale/timescaledb/issues/1669
# Also bump max connection from the default 100 to 512 as we use large PSQL connection pool
# Default max_pred_locks_per_transaction=64
# Make sure we do not have runaway queries by limiting the query time to 1h
command:
- -ctimescaledb.max_background_workers=256
- -cmax_parallel_workers=128
- -cmax_worker_processes=256
- -cmax_connections=1024
- -cmax_wal_size=4GB
# Note: Got one OperationalError: (psycopg2.errors.OutOfMemory) out of shared memory
# when doing parallel data import
- -cmax_pred_locks_per_transaction=4096
# Catch long running queries that should not be happening
- -cstatement_timeout=180min
# Catch leaking SQLAlchemt connections
- -cidle_in_transaction_session_timeout=3600000
# Because ZFS always writes full blocks, you can disable full page writes in PostgreSQL via full_page_writes = off setting
# https://bun.uptrace.dev/postgres/tuning-zfs-aws-ebs.html#disabling-postgresql-full-page-writes
- -cfull_page_writes=off
# Runs on ZFS so not needed
- -csynchronous_commit=off
# Prefer ZFS ARC cache over shared_buffers
# https://bun.uptrace.dev/postgres/tuning-zfs-aws-ebs.html#disabling-toast-compression
- -cshared_buffers=32GB
environment:
POSTGRES_USER: postgres
POSTGRES_DB: dex_ohlcv
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
ports:
- "5432:5432"
volumes:
- $PWD/data/:/var/lib/postgresql/data
- $PWD/logs/:/var/log/timescaledb