Performance degrades gradually, so it often goes unnoticed until transactions start timing out or the validator falls behind on event processing. This page covers the most common performance problems and their solutions.Documentation Index
Fetch the complete documentation index at: https://docs.canton.network/llms.txt
Use this file to discover all available pages before exploring further.
Slow Transactions
If transaction latency has increased, check these areas in order.Traffic Balance
Low traffic balance causes the sequencer to throttle your validator’s messages. Check it with:availableTraffic is near zero (or traffic limits are exhausted), top up immediately and enable auto-top-up to prevent recurrence.
Database Performance
Query the database for active slow queries:- Tables have grown too large. Enable pruning (see below).
- Missing indexes. After a major upgrade, run
ANALYZEon the participant database to update query planner statistics. - Insufficient IOPS. If running on cloud infrastructure, upgrade your storage class (e.g., switch from gp2 to gp3 on AWS and increase provisioned IOPS).
JVM Heap Pressure
If the validator process is spending significant time in garbage collection, transaction processing slows down. Check for GC pressure in logs:Full GC entries. Increase heap allocation:
-Xlog:gc*.
Resource Exhaustion
Disk Space
The participant database grows continuously as new transactions are processed. Without pruning, it will eventually exhaust disk space. Symptoms:- PostgreSQL errors:
could not extend file ... No space left on device - Pod eviction in Kubernetes due to ephemeral storage limits
maxDuration generously for the initial prune (60 minutes or more).
Memory
If the validator pod is killed by the OOM killer (exit code 137), increase the memory limit:CPU
High CPU usage is usually caused by runaway automation (a script that retries in a tight loop) or heavy ACS (Active Contract Set) processing. Identify the cause:Database Query Optimization
Missing Indexes
After an upgrade or migration, indexes may not have been created for new columns. Check for sequential scans on large tables:seq_scan count and low idx_scan count are candidates for missing indexes. Consult the Canton release notes for any required index additions.
Connection Pool Exhaustion
If you see errors like:- Long-running queries holding connections
- Too many concurrent operations for the configured pool size
- Database-side connection limits reached
max_connections setting to confirm it accommodates all connection pools across your deployment.