-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
177 lines (167 loc) · 8.25 KB
/
Copy path.env.example
File metadata and controls
177 lines (167 loc) · 8.25 KB
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
# Yalnizca yerel gelistirme icindir. Canli ortamda secret manager kullanin.
# Ayni Docker hostundaki her kurulum icin benzersiz bir proje adi secin.
COMPOSE_PROJECT_NAME=postgresql-advisor
# Yalniz Docker/VPN subnet cakismasi varsa tracked overlay'i etkinlestirin:
# COMPOSE_FILE=compose.yaml:compose.networks.fixed.yaml
POSTGRES_ADMIN_PASSWORD=
POWA_COLLECTOR_PASSWORD=
ADVISOR_API_PASSWORD=
ADVISOR_EVALUATOR_PASSWORD=
# `scripts/enable-hypopg.sh` tarafindan uygulanacak virgulle ayrilmis, basit
# PostgreSQL sema adlari. Role yalniz USAGE + mevcut/gelecek tablolar icin SELECT verilir.
ADVISOR_EVALUATOR_READ_SCHEMAS=public
EVALUATOR_TOKEN=change-me-internal-evaluator-token
ADVISOR_JOIN_SOURCE_PASSWORD=
ADVISOR_JOIN_REPOSITORY_PASSWORD=
WORKLOAD_DB_PASSWORD=
CLONE_ADMIN_PASSWORD=change-me-clone-admin
CLONE_RUNNER_PASSWORD=change-me-clone-runner
CLONE_EVALUATOR_TOKEN=change-me-internal-clone-token
# `scripts/generate-auth-credential.py` ile uretin. Raw bearer token'i browser
# bundle'ina veya bu dosyaya koymayin; API yalniz SHA-256 hashini alir.
# Bos liste annotation/export ve gercek-index clone runtime endpoint'lerini
# fail-closed kapatir. Dashboard source EXPLAIN tek-kullanicili loopback'te
# aciktir; portu disa acmadan once auth/rate-limit katmani ekleyin.
ADVISOR_AUTH_PRINCIPALS=[]
# Host portlari
SOURCE_DB_BIND=127.0.0.1
SOURCE_DB_PORT=15432
REPOSITORY_DB_BIND=127.0.0.1
REPOSITORY_DB_PORT=15433
API_BIND=127.0.0.1
API_PORT=8000
WEB_BIND=127.0.0.1
WEB_PORT=5173
# Uygulama ayarlari
DEFAULT_WINDOW=24h
RETENTION_DAYS=90
LOG_LEVEL=INFO
# Query-list satirlari, overview kartlari ve detail'in temel query-metrics satiri
# ayni pencere snapshot'ini paylasir. Overview global trend'i ayri bir pencere
# cache'inde ayni fresh/stale/max-row ayarlarini, fakat kapsam sayisina uygun
# ayri GLOBAL_TREND_CACHE_MAX_ENTRIES sinirini kullanir. Iki agir
# refresh repository-wide tek lock ile serialize edilir. Scoped detail trend'i
# ve collector-health her istekte repository'den canli okunur.
# Fresh sureyi en sik kaynak cadence'inden kisa secmek cache refresh'lerini
# gereksiz siklastirir. Stale sure refresh hatasinda kullanilabilecek kesin ust
# sinirdir. Satir/entry kapilari eksik sonuc dondurmek yerine fail-closed durur.
QUERY_LIST_CACHE_FRESH_SECONDS=60
QUERY_LIST_CACHE_STALE_SECONDS=300
QUERY_LIST_CACHE_MAX_ENTRIES=4
GLOBAL_TREND_CACHE_MAX_ENTRIES=64
QUERY_LIST_CACHE_MAX_ROWS=100000
QUERY_LIST_CACHE_MAX_BYTES=67108864
# Tam snapshotlarin Python nesne ek yükü ayrıca container seviyesinde sınırlıdır.
API_MEMORY_LIMIT=1g
# Eszamanli repository migration runner'larinin advisory lock bekleme siniri.
MIGRATION_LOCK_TIMEOUT_SECONDS=60
# HypoPG planlamasi kisa bir kapida kalir. Dashboard'daki source EXPLAIN
# ANALYZE ise sorguyu ana DB'de gercekten calistirdigi icin ayri ve genis bir
# timeout kullanir. Transaction siniri statement sinirindan uzun olmalidir.
EVALUATOR_TIMEOUT_SECONDS=4
EVALUATOR_STATEMENT_TIMEOUT_MS=2000
EVALUATOR_LOCK_TIMEOUT_MS=250
SOURCE_EXPLAIN_TIMEOUT_SECONDS=130
EVALUATOR_RUNTIME_STATEMENT_TIMEOUT_MS=120000
EVALUATOR_RUNTIME_LOCK_TIMEOUT_MS=5000
EVALUATOR_RUNTIME_TRANSACTION_TIMEOUT_MS=125000
# Iterasyon 2.1-B pg_qualstats kaynak ayarlari. Kabul workload'u yalniz kendi
# oturumunda sample_rate=1 kullanir; global varsayilan kontrollu olarak 0.1'dir.
# Genis ERP kataloglarinda pg_stat_statements eviction olmasin diye iki kapasite
# birlikte boyutlanir. Dusurmeden once pg_stat_statements_info.dealloc izleyin.
PG_STAT_STATEMENTS_MAX=50000
PG_QUALSTATS_SAMPLE_RATE=0.1
PG_QUALSTATS_MAX=50000
SOURCE_DB_SHM_SIZE=512mb
REPOSITORY_DB_SHM_SIZE=256mb
# Iterasyon 2.4 wait sampling. Deger milisaniyedir; canlida benchmark olmadan
# daha sik orneklemeyin. sample_cpu kapali tutulur, CPU kcache'den gelir.
PG_WAIT_SAMPLING_PROFILE_PERIOD_MS=10
# Opt-in realistic workload. Normal compose baslatmasinda servis kapali kalir;
# Yalniz `realistic-load` profiliyle acilir. Sure 0 ise elle durdurulana
# kadar devam eder. Hacimli seed hedefleri run scriptindeki profile aittir.
WORKLOAD_PROFILE=normal
WORKLOAD_DURATION_SECONDS=0
WORKLOAD_WORKERS=6
WORKLOAD_INTERVAL_SECONDS=0.25
WORKLOAD_REPORT_INTERVAL_SECONDS=10
WORKLOAD_RANDOM_SEED=20260725
WORKLOAD_STATEMENT_TIMEOUT_MS=15000
WORKLOAD_LOCK_TIMEOUT_MS=5000
WORKLOAD_LOCK_HOLD_MS=75
WORKLOAD_MAX_MUTATION_ROWS=10000
WORKLOAD_MUTATION_CLEANUP_BATCH=250
WORKLOAD_MAX_EVENT_ROWS=20000
WORKLOAD_EVENT_CLEANUP_BATCH=250
WORKLOAD_CONNECT_TIMEOUT_SECONDS=5
# Post-load verifier, ERP harness ile ayni query-list penceresini isitir. Ilk
# cold-cache istegi ayri timeout kullanir ve latency dagilimina katilmaz; sonraki
# 20..100 olcum 5 saniyelik katı request timeout'unu korur. Host scriptleri bu
# degerleri Compose .env'den otomatik almaz; degistirirken prefix/export edin.
REALISTIC_API_WINDOW=24h
REALISTIC_API_WARMUP_TIMEOUT_SECONDS=120
# Full `scripts/verify.sh` also warms its cold 24h query-list once before the
# strict <2s request. Host-shell override; the warmup is bounded and untimed.
VERIFY_API_WARMUP_TIMEOUT_SECONDS=120
# Full verifier FORCE_SNAPSHOT waits use the source's persisted PoWA frequency
# plus this scheduling grace, with the previous 40s window kept as a floor.
VERIFY_SNAPSHOT_GRACE_SECONDS=30
# Database counter acceptance SQL remains fail-closed under host contention.
# This server-side timeout bounds only that read-only verifier probe; it does
# not relax any workload, telemetry, API latency, or metric threshold.
REALISTIC_DATABASE_METRICS_TIMEOUT_SECONDS=30
# Wrapper ERP profilinde tam 500 x 8 = 4000 fingerprint kontratini otomatik
# verir. Servisi dogrudan acacaksaniz ERP icin tablo sayisini 500 ve bounded
# sureyi >0 yapin; quick/normal/stress icin tablo sayisini 0 birakin. Referans
# erp 600/32 kabul baslangic zarfi 12 vCPU, 16 GiB Docker bellegi ve 30 GiB bos
# disktir; bunlar production garantisi degil, hedef hostta kalibre edilmelidir.
# Host benchmark'i 24h query-list -> overview -> detail/trend batch'lerini doner.
# Varsayilan concurrency list/detail=2, overview=1; p95 esikleri 2s/8s/2s'dir.
# ERP_API_*, ERP_MAX_API_* ve ERP_BENCHMARK_SAMPLE_SECONDS Python host process
# environment'inda prefix/export edilmelidir; Compose .env dosyasi benchmark
# process'ine bu degerleri kendiliginden yuklemez. Tam tablo runbook'tadir.
# Full release acceptance yalniz dedicated sentetik ERP source'unda calisir.
# Seed milyonlarca satir, 500 fixture tablo, grant/index degisikligi ve managed
# write/delete trafiği uretir; production source'unda kullanmayin. Raw admin
# token'i bu dosyaya yazmayin, yalniz komut process environment'inda tutun.
# ERP_FULL_ACCEPTANCE=false
# ERP_FULL_ACCEPTANCE_TIMEOUT_SECONDS=180
# ERP_FULL_QUERY_WAIT_SECONDS=120
# ERP_MAX_FULL_WEB_SECONDS=10
# ERP_MAX_SOURCE_EXPLAIN_SECONDS=130
# ERP_MAX_CSV_EXPORT_SECONDS=180
# ERP_MAX_CSV_FIRST_BYTE_SECONDS=30
# ERP_MIN_CSV_EXPORT_RECORDS=201
WORKLOAD_ERP_TABLE_COUNT=0
WORKLOAD_ERP_QUERY_VARIANTS_PER_TABLE=8
WORKLOAD_ERP_ROWS_PER_TABLE=2000
# Iterasyon 2.5 outbox aktarimi ve 2.7 istege bagli tmpfs clone sinirlari.
JOIN_SOURCE_ALIAS=test-source
JOIN_POLL_INTERVAL_SECONDS=2
JOIN_RETENTION_DAYS=30
JOIN_HEALTH_MAX_AGE_SECONDS=60
JOIN_HEALTH_START_PERIOD=30s
# Source-primary circuit breaker. Esiklerden biri dolu outbox tarafindan
# asilirsa yeni JOIN capture/reset yapilmaz; collector hatayi acik raporlar.
# Snapshotter backlog'u ack ile sifirlayinca sonraki snapshot otomatik toparlar.
JOIN_OUTBOX_MAX_ROWS=1000000
JOIN_OUTBOX_MAX_BYTES=1073741824
JOIN_OUTBOX_MAX_AGE_SECONDS=300
# Transport her seferinde yalniz bir <=8 MiB chunk materialize eder; Python ve
# libpq decode/encode headroom'u icin daemon envelope'i 256 MiB tutulur.
JOIN_SNAPSHOTTER_MEMORY_LIMIT=256m
CLONE_DATA_TMPFS_SIZE=1g
# Clone template'in hangi repository source alias'ina ait oldugunu fail-closed baglar.
CLONE_SOURCE_ALIAS=test-source
CLONE_WARMUP_RUNS=1
CLONE_MEASURED_RUNS=5
CLONE_MIN_IMPROVEMENT_PERCENT=10
# Temiz gercek-DB kurulumunda false yapin. Yalniz bos repository volume'unun
# ilk bootstrap'inda okunur. Bu ayar workload profilini baslatmaz.
REGISTER_DEMO_SOURCE=true
# Fresh demo volume'de guvenli/uretim-temsili varsayilan. Yalniz kisa yerel
# acceptance dongusu icin bilincli olarak 5'e dusurun; ERP benchmark >=30 ister.
DEMO_SOURCE_FREQUENCY=60
# Collector'daki tum dis kaynaklar icin ortak libpq TLS modu. verify-full icin
# kurum CA/certificate dosyalarini collector'a ayrica mount etmeniz gerekir.
POWA_SOURCE_SSLMODE=prefer