Limits and Performance
Subscription Limits
Each authentication token (client) is limited to:
Total concurrent subscriptions
6
Transaction streams
2 max
Account update streams
5 max
Slot status streams
2 max
Wallet transaction streams
10 max
Per-Subscription Limits
Wallet addresses per request
10
Account addresses per request
100
Performance Requirements
EventPublisher Service (Individual Streams)
Recommended for most use cases.
CPU
2-4 cores
RAM
2-4 GB
Network
Standard broadband
ThorStreamer Service (Unified Stream)
High-throughput stream combining all events. Requires robust infrastructure.
CPU
8+ cores
RAM
16+ GB
Network
Low-latency, high-bandwidth
Disconnection Policy
Clients are automatically disconnected when they cannot keep up with the stream:
High message drop rate — >50% messages dropped consistently
Processing latency — Sustained delays in message handling
Buffer overflow — Client or server-side buffer saturation
Warning Signs
Before disconnection, you may observe:
Increasing latency in message delivery
Gaps in slot numbers or transaction indices
Server-side warning messages
Mitigation
Choosing the Right Service
Monitor specific programs
EventPublisher: SubscribeToTransactions
Track wallet activity
EventPublisher: SubscribeToWalletTransactions
Monitor account states
EventPublisher: SubscribeToAccountUpdates
Block confirmations
EventPublisher: SubscribeToSlotStatus
All data, high-performance infra
ThorStreamer: StreamUpdates
Optimization Tips
Message Processing
// Use goroutines for parallel processing (Go)
for {
msg, err := stream.Recv()
if err != nil {
break
}
go processMessage(msg) // Process concurrently
}// Use tokio::spawn for async processing (Rust)
while let Some(response) = stream.message().await? {
let data = response.data.clone();
tokio::spawn(async move {
process_message(data).await;
});
}Buffer Management
Use bounded channels/queues to prevent memory exhaustion
Implement circuit breakers for downstream systems
Monitor queue depths as a health indicator
Network
Deploy clients in same region as ThorStreamer server
Use persistent connections (gRPC handles this automatically)
Avoid proxy layers that add latency
Last updated