66 lines
3.0 KiB
YAML
66 lines
3.0 KiB
YAML
# Один узел, состояние маскирования/демаскирования — в памяти самого процесса
|
||
# (pdguard.store.backend=memory, дефолт). Redis был нужен только чтобы разделить
|
||
# состояние между несколькими репликами; кластерная схема на 4-vCPU хосте под
|
||
# нагрузкой давала конкуренцию за CPU (см. историю в git) — один узел проще и
|
||
# получает весь хост целиком.
|
||
services:
|
||
|
||
pd-guard:
|
||
image: pd-guard-spring:jvm
|
||
ports:
|
||
- "8080:8080"
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: "4"
|
||
memory: 6g
|
||
environment:
|
||
# Дефолт JVM — 25% контейнерного лимита на heap.
|
||
JAVA_OPTS: >-
|
||
-Dspring.config.additional-location=optional:file:/deployments/config/
|
||
-XX:MaxRAMPercentage=75.0
|
||
PDGUARD_MAX_CONCURRENT: "2000"
|
||
# На 1 vCPU дефолт 200мс держал concurrency у пола; на 4 vCPU запас есть,
|
||
# но 800мс оставлено с той же осторожностью — целевая latency контракта 1с.
|
||
PDGUARD_TARGET_LATENCY_MS: "800"
|
||
PDGUARD_WARMUP_ITERATIONS: "2000"
|
||
# Вторая ступень распознавания — две модели под разные задачи (см.
|
||
# NameCascade.java): WikiNEuRal размечает имена, ruBERT — составляющие
|
||
# адреса. Модели в репозиторий не входят: ./tools/fetch-ner-model.sh.
|
||
PDGUARD_NER_NAME_ENGINE: wikineural
|
||
PDGUARD_NER_NAME_MODEL: /deployments/models/wikineural-ner
|
||
PDGUARD_NER_ADDRESS_ENGINE: rubert
|
||
PDGUARD_NER_ADDRESS_MODEL: /deployments/models/rubert-ner
|
||
# Третья ступень (юридические реквизиты, LLAIM Legal NER) временно выключена
|
||
# для нагрузочного теста — проверяем, она ли основной источник CPU-затрат
|
||
# на 1-vCPU лимите. Включить: PDGUARD_NER_LEGAL_ENGINE=ru-legal-ner.
|
||
PDGUARD_NER_LEGAL_ENGINE: "off"
|
||
volumes:
|
||
- ./config:/deployments/config:ro
|
||
- ./models:/deployments/models:ro
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"]
|
||
interval: 10s
|
||
timeout: 2s
|
||
retries: 3
|
||
|
||
prometheus:
|
||
image: prom/prometheus:v2.55.1
|
||
volumes:
|
||
- ./monitoring/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||
ports:
|
||
- "9090:9090"
|
||
|
||
grafana:
|
||
image: grafana/grafana:11.3.0
|
||
depends_on:
|
||
- prometheus
|
||
ports:
|
||
- "3000:3000"
|
||
environment:
|
||
GF_AUTH_ANONYMOUS_ENABLED: "true"
|
||
GF_AUTH_ANONYMOUS_ORG_ROLE: Viewer
|
||
volumes:
|
||
- ./monitoring/grafana/provisioning:/etc/grafana/provisioning:ro
|
||
- ./monitoring/grafana/dashboards:/var/lib/grafana/dashboards:ro
|