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 @PostConstruct cache builders + CubeDslCacheService warm-up on ready).

Known Hotspots / Risks

  • ReplaceServiceCacheService.refreshCache loads 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).

  • tabs cache 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.