Performance issues
The platform is slow: tasks, UI or provisioning are sluggish.
Performance issues trace to database bottlenecks, oversized tasks, JVM limits or missing partitioning. Measure before changing anything.
- Symptom: The platform is slow: tasks, UI or provisioning are sluggish.
- Most likely causes
- Step-by-step fixes
- How to prevent recurrence
The platform is slow, aggregation and refresh take too long, the UI lags, or provisioning is sluggish. Performance problems are almost always traceable to the database, unpartitioned heavy tasks, or JVM sizing, but you must measure to know which.
Start here: read the evidence
Baseline where time is actually spent before changing anything, task durations, database query times, GC behaviour. Blind tuning usually makes things worse; measurement points you at the real bottleneck.
Likely causes, in order
- Database bottleneck, missing indexes, poor query plans, or an under-sized instance (the usual first cause).
- Unpartitioned heavy tasks running single-threaded for hours.
- Undersized JVM heap causing constant garbage collection.
- Full instead of delta aggregation on large sources.
- Custom rules querying the database per identity.
How to fix it
- Baseline task times, DB query times and GC before tuning.
- Add or verify database indexes, including for searched extended attributes.
- Partition heavy aggregations and refreshes.
- Enable delta aggregation where supported.
- Right-size the JVM heap and connection pool; move heavy custom queries out of per-identity loops.
Preventing recurrence
Separate UI nodes from task nodes, keep the database properly sized and indexed, load-test before adding population or applications, and review custom rules for per-identity database calls.
Common pitfalls
- Guessing instead of reading the task/transaction result, which usually names the cause.
- Fixing the symptom, not the root cause, so it returns.
- Changing several things at once, so you cannot tell what worked.