Limits and defaults
The numbers the gateway enforces or starts with, grouped by area. A default can be changed where the table says; a limit cannot. Durations in configuration keys are .NET TimeSpan strings (d.hh:mm:ss).
Live data (/sync)
| Item | Value | Notes |
|---|---|---|
| Sockets per user | 32 | Limit |
| Subscriptions per socket | 10,000 | Limit |
| Socket closed after its session ends | within 30 s | Also when the session no longer holds a known role |
| Slow client | Oldest queued frames dropped; a client too far behind is disconnected | |
| WebSocket keep-alive | ping every 30 s, timeout 60 s |
See Sync.
Replay
| Item | Value | Notes |
|---|---|---|
| Replays at once, gateway-wide | 8 | Limit; one per socket, a second request ends the first |
| Gap shortening | Gaps over 5 s play as 5 s | |
| Checkpoint interval | 1 hour | EventBackbone__CheckpointInterval, a whole fraction of an hour |
| Checkpoint retention | value retention + 2 hours | |
| Checkpoint lookback at start | up to 6 hours back; with none, the last hour of values is folded in | |
replay.status while playing | about 4 per second | |
| Alarm history available to a replay | Alarms__EventRetention (365 days) | Further back shows no alarms |
See History and replay.
Event backbone
| Item | Default | Key |
|---|---|---|
| Value retention | 7 days | EventBackbone__ValueRetention |
| Metadata retention | 30 days | EventBackbone__MetadataRetention |
| Batch size | 256 values | EventBackbone__BatchMaxCount |
| Batch latency | 25 ms | EventBackbone__BatchMaxLatencyMs |
tag.replay from the backbone | at most 10,000 stored batches read from the start of a range (truncated) | Limit |
| History module answer timeout | 15 s, then the backbone answers | Limit |
| SQLite checkpoint | every 5 s | WAL mode, synchronous=NORMAL |
See Configuration.
Scripts
| Script kind | Statements | Memory | CPU time |
|---|---|---|---|
| Expression tag | 50,000 | 16 MiB | 250 ms |
| Screen script | 500,000 | 32 MiB | 2 s |
| Module script (cron) | 2,000,000 | 32 MiB | 5 s |
| Item | Value |
|---|---|
| Source length | 64 KiB |
| A script's tag reads, in all | 5 s |
| Worker pool | 2 ready from start, up to 4 on a machine with the cores, about 50 to 60 MiB each |
| Worker heap | 256 MiB; running out ends that worker |
| Stuck script | killed 1 s after its limit |
| Refusal after a crash | 5 s, doubling each time up to 5 min |
| Module scripts | one at a time across the gateway |
See Scripting.
Alarms
| Item | Value | Notes |
|---|---|---|
| Severity | 1 to 1000, default 500 | |
| On-delay | up to one day (onDelayMs) | On the gateway's clock |
| Evaluation queue | 32,768 values | In memory; a burst past it is not evaluated, the state converges on the newest value |
| Renames, tag disables and deletes picked up | within 5 s | |
| History retention | 365 days | Alarms__EventRetention |
See Alarms.
Alarm pipelines and event streams
| Item | Value |
|---|---|
| Pipeline deliveries kept in the log | last 500 |
| Pipeline webhook timeout | 10 s |
| Event stream batches kept in memory (log) | last 200 |
| Event stream batches held for resending when the receiver is down | up to 50 per stream, resent every 10 s, oldest first; lost on restart |
| Event stream webhook timeout | 10 s |
| Response detail kept | 300 characters |
See Alarm pipelines and Event streams.
Historian and cron
| Item | Value | Notes |
|---|---|---|
| Historian retention | 90 days default, up to 36,500 | retentionDays on the historian's settings; shortening prunes at once, otherwise hourly |
| Cron runs kept | 90 days, at most 2,000 per job | |
| Cron schedule | five fields, per-job time zone; nothing below a minute |
Modules
| Item | Value | Notes |
|---|---|---|
| Upload size | 200 MB | Limit, 400 when exceeded |
| Files in a package | 5,000 | Limit |
| Unpacked size | 400 MB | Limit |
| Stop timeout | 30 s | Modules__StopTimeoutSeconds |
| Start timeout | 120 s | Modules__StartTimeoutSeconds |
| Log lines in memory, per module | 2,000 | |
| Log files, per module | 5 of 2 MB each | Modules__LogFileBytes |
| Log stream keepalive | every 15 s | Server-sent events |
| Default log level | information | Changeable at run time |
See Modules.
Tags and tag types
| Item | Value |
|---|---|
| Type inheritance depth | 8 types |
| Derived bit number | 0 to 63 |
@gateway.performance.* publish interval | every 10 s |
@gateway.time | once a second |
Connection state gathered for @gateway.connection tags | every 2 s |
Security and audit
| Item | Value | Notes |
|---|---|---|
| Session lifetime | 7 days from sign-in | Not sliding; cookie scadex.session |
| Write audit value | cut to 4 KB | Nothing prunes the table yet |
| Gateway log buffer | newest 2,000 lines | In memory, not persisted |
| Screen presence heartbeat | every 15 s, expires after 45 s | Who has a screen open in the editor |