Performance
Performance posture
No formal SLOs are currently defined; measure behavior via metrics and load tests.
Key Observations (from code)
-
Virtual threads are enabled for servlet handling (
spring.threads.virtual.enabled=true), reducing platform thread pressure for blocking I/O workloads. -
Open-session-in-view is disabled; expensive lazy initialization errors should be caught in service layer tests.
-
Cache warm-up at startup can be expensive for large datasets (multiple
@PostConstructcache builders +CubeDslCacheServicewarm-up on ready).
Known Hotspots / Risks
-
ReplaceServiceCacheService.refreshCacheloads nested objects and parameters per service (potential N+1 DB access pattern). -
Several cache refreshes are invoked inside write transactions; if strict post-commit publishing is required, refactor to publish after commit (Runtime Behavior).
-
tabscache is not refreshed by/tabs/**write flows today (known bug; see Caching Strategy).
Measuring and tuning
Use:
-
Actuator + Prometheus endpoint (
/configs-service/actuator/prometheus) to measure request latency, throughput, JVM and DB pool metrics. -
Database slow query logs / query plans for import-heavy domains.
-
Hazelcast client metrics/logs for publish latency and cluster connectivity issues.