Performance
This page covers server-side and client-side performance tuning for Inspire.
Server Performance
Database
| Symptom | Cause | Solution |
|---|---|---|
| Slow page loads | Missing indexes | Check PostgreSQL query plans; indexes are created automatically but custom queries may need tuning |
| High CPU on database | Too many concurrent queries | Increase connection pool size or add read replicas |
| Growing disk usage | Snapshot retention too long | Reduce snapshot retention in DataPool settings |
Edge Service
| Symptom | Cause | Solution |
|---|---|---|
| Slow API responses | High load | Scale horizontally with multiple Edge containers |
| Memory growth | Large tenant data | Increase container memory limit; check for memory leaks in logs |
| Slow image uploads | Disk I/O bottleneck | Use SSD storage; consider object storage for media |
DataPool Service
| Symptom | Cause | Solution |
|---|---|---|
| Data push delays | Too many concurrent streams | Scale DataPool service horizontally |
| Redis memory full | Too many cached values | Increase Redis memory limit or reduce cache TTL |
| SignalR connection limits | Too many connected devices | Add more DataPool instances behind load balancer |
Client Performance
Display Devices
| Optimisation | Details |
|---|---|
| Use appropriate resolution | Do not render 4K content on 1080p displays |
| Optimise images | Resize images to display size before uploading |
| Limit concurrent videos | Each video stream uses significant bandwidth and CPU |
| Use components over raw elements | Components are pre-rendered and cached efficiently |
| Reduce DataPool subscriptions | Only bind to fields you actually display |
Web UI
| Optimisation | Details |
|---|---|
| Use a modern browser | Chrome or Edge latest for best performance |
| Close unused Designer tabs | Each open Designer tab maintains a live connection |
| Limit canvas elements | Scenes with 100+ elements may be slow to edit — consider using components |
Scaling
Horizontal Scaling
Inspire services can be scaled horizontally:
| Service | Scale Method | Considerations |
|---|---|---|
| Edge | Multiple containers behind load balancer | Session affinity required |
| DataPool | Multiple containers with shared Redis | SignalR backplane via Redis |
| Renderer | Client-side, no scaling needed | One renderer per device |
Redis Clustering
For large deployments (500+ devices), configure Redis in cluster mode:
- Set up a Redis cluster with 3+ nodes
- Update
REDIS_URLto point to the cluster - Restart Edge and DataPool services
- Verify connections in service logs
Most installations (up to 200 devices) run comfortably on a single server with default settings. Only consider scaling when you observe sustained resource pressure.
Monitoring
Use the built-in admin dashboard (Settings > System Health) to monitor:
- CPU, memory, and disk usage per service
- Database query performance
- Active WebSocket connections
- Data throughput (items/second)
- Error rates
Last updated on