Plan and size
Work out your volume
Section titled “Work out your volume”Count instances (images) per day, not studies. A CT study is often 300–2,000 instances; a radiograph is 1–4. Average instance sizes run from about 0.1 MB (compressed CR/DX, ultrasound) to 0.5 MB (uncompressed CT/MR); breast tomosynthesis and multi-frame objects can be hundreds of MB each. Expect the busiest hour to carry about 12–15% of the day’s traffic.
| Tier | Typical site | Instances per day | Data per day |
|---|---|---|---|
| Small | Imaging centre or clinic, 1–5 modalities | up to 50,000 | up to 25 GB |
| Medium | Community hospital | 50,000 – 500,000 | 25 – 250 GB |
| Large | Large hospital or several sites | 500,000 – 3,000,000 | 250 GB – 1.5 TB |
Above the large tier, add nodes behind a load balancer and give the database its own capacity planning.
| Small | Medium | Large | |
|---|---|---|---|
| vCPU | 4 | 8 | 16 |
| RAM | 8 GB | 16 GB | 32 GB |
| Data volume (SSD) | 250 GB | 0.5 – 1 TB | 2 – 4 TB (NVMe) |
| Network | 1 GbE | 1–10 GbE | 10 GbE |
| Nodes | 1 (2 for redundancy) | 2 recommended | 2–4 |
- CPU matters mainly for transcoding, for example sending JPEG 2000 to an archive; compressing to JPEG 2000 is the most expensive operation. A node that passes instances through as received needs about half the CPUs above.
- Memory used by the node itself is small (about 150 MB, flat, in a four-hour soak test). The rest serves as file cache.
- Network: every instance crosses the network once inbound and once for each destination. With three destinations, 1 GbE carries about 25 MB/s of incoming data.
- Throughput is rarely the router’s limit: on a laptop, two nodes routed 2,000 instances from 40 senders in about 5 seconds. The network and the destinations set the pace.
The data volume
Section titled “The data volume”Size it as the sum of:
- Resend cache: a day’s data × Resend cache (hours) ÷ 24, capped by the Resend cache limit (defaults: 24 hours, 100 GB). Delivered instances stay here so they can be sent again from the history.
- Outage buffer: peak hourly data × the hours you want to ride out a destination outage, such as a PACS down overnight. An instance is stored once however many destinations it goes to.
- Minimum free disk: 10 GB by default. Below it, the node stops accepting new associations until it has caught up.
- 20% headroom.
Example, a medium site at 150 GB/day: cache 100 GB (capped), plus an 8-hour outage at about 20 GB/h (160 GB), plus 10 GB, plus 20%: about 320 GB. A 500 GB volume is comfortable.
The central service and its database
Section titled “The central service and its database”| Small | Medium | Large | |
|---|---|---|---|
| Central service | 2 vCPU, 4 GB RAM | 2–4 vCPU, 8 GB RAM | 2 servers, each 4 vCPU, 8 GB RAM |
| Database | PostgreSQL, or SQL Server Express (10 GB limit) or Standard | PostgreSQL or SQL Server Standard | PostgreSQL with replication, or SQL Server Standard/Enterprise with Always On |
| Database placement | same server is fine | same or separate | separate, highly available |
| Database size (30 days of history) | 2 – 10 GB | 10 – 100 GB | 100 – 600 GB |
The database holds the configuration and the history, which takes about 2 KB per instance plus 1 KB per destination it goes to:
database size ≈ instances per day × history retention days × (2 KB + 1 KB × destinations per instance) × 1.3
Example: 50,000 instances a day, 30 days, 3 destinations: 50,000 × 30 × 5 KB × 1.3 ≈ 10 GB. That is the limit of SQL Server Express, so use PostgreSQL or SQL Server Standard, or shorten History retention.
HL7 messages, when you route them, are kept too (compressed, 90 days by default): allow roughly 1 KB per message.
The central service itself is light: it serves the console and takes a heartbeat from each node every couple of seconds. Its load grows with history writes.
SQL Server or PostgreSQL?
Section titled “SQL Server or PostgreSQL?”Both work the same; pick one per installation.
- PostgreSQL (18 or later) is free, has no size limit, and runs on Windows, Linux and in Docker. It is the natural choice for a new installation, and the only one for Linux and Docker.
- SQL Server (2019 or later) suits sites that already run it, with Windows authentication and Always On.
Several sites
Section titled “Several sites”One installation can serve several sites: put nodes at each site, all managed from the same console, and route between them. Each node sends only its own site’s traffic; studies cross the WAN only when a route sends them there. A second central server at another site keeps the console and coordination available if one site is cut off.
