chore(postgres): 支持通过环境变量配置 PG 性能参数

This commit is contained in:
fawney19
2026-05-20 17:41:52 +08:00
parent e7a76b0510
commit 76752beca6
2 changed files with 27 additions and 2 deletions

View File

@@ -49,7 +49,7 @@ ENCRYPTION_KEY=change-this-to-another-secure-random-string
# 启动自举管理员(仅在当前库里还没有活动管理员时生效) # 启动自举管理员(仅在当前库里还没有活动管理员时生效)
# 手动部署时取消注释并设置install.sh 首次生成配置时会提示输入。 # 手动部署时取消注释并设置install.sh 首次生成配置时会提示输入。
ADMIN_EMAIL=admin@example.com ADMIN_EMAIL=admin@example.com
ADMIN_USERNAME=admin ADMIN_USERNAME=admin123456
# ADMIN_PASSWORD= # ADMIN_PASSWORD=
# ==================== 可选配置(有默认值) ==================== # ==================== 可选配置(有默认值) ====================
@@ -66,3 +66,17 @@ ADMIN_USERNAME=admin
# AETHER_GATEWAY_DATA_POSTGRES_MAX_CONNECTIONS=20 # AETHER_GATEWAY_DATA_POSTGRES_MAX_CONNECTIONS=20
# AETHER_GATEWAY_DATA_POSTGRES_STATEMENT_CACHE_CAPACITY=100 # AETHER_GATEWAY_DATA_POSTGRES_STATEMENT_CACHE_CAPACITY=100
# AETHER_GATEWAY_DATA_POSTGRES_ACQUIRE_TIMEOUT_MS=3000 # AETHER_GATEWAY_DATA_POSTGRES_ACQUIRE_TIMEOUT_MS=3000
# PostgreSQL 性能调优(默认值适合 2核2GB 的最小机器,按实际配置覆盖)
# 参考shared_buffers ≈ 可用内存 25%effective_cache_size ≈ 可用内存 50-75%
# work_mem 是每个连接每个排序操作的内存,不要设太大(并发数 × work_mem 是实际占用)
# | 系统内存 | shared_buffers | effective_cache_size | work_mem |
# | 2GB | 256MB | 768MB | 4MB |
# | 4GB | 1GB | 3GB | 16MB |
# | 8GB | 2GB | 6GB | 16MB |
# | 16GB | 4GB | 12GB | 32MB |
# | 32GB+ | 8GB | 24GB | 32MB |
# POSTGRES_SHARED_BUFFERS=256MB
# POSTGRES_EFFECTIVE_CACHE_SIZE=768MB
# POSTGRES_WORK_MEM=4MB
# POSTGRES_MAINTENANCE_WORK_MEM=64MB

View File

@@ -14,7 +14,18 @@ services:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
ports: ports:
- "127.0.0.1:${DB_PORT:-5432}:5432" - "127.0.0.1:${DB_PORT:-5432}:5432"
command: postgres -c idle_in_transaction_session_timeout=30000 -c tcp_keepalives_idle=30 -c tcp_keepalives_interval=10 -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all command: >
postgres
-c idle_in_transaction_session_timeout=30000
-c tcp_keepalives_idle=30
-c tcp_keepalives_interval=10
-c shared_preload_libraries=pg_stat_statements
-c pg_stat_statements.track=all
-c pg_stat_statements.max=10000
-c shared_buffers=${POSTGRES_SHARED_BUFFERS:-256MB}
-c effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-768MB}
-c work_mem=${POSTGRES_WORK_MEM:-4MB}
-c maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}
healthcheck: healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ] test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 5s interval: 5s