Skip to main content

Limits and defaults

Server-side limits and their defaults. All are configurable; the flag name is in the right column. See Configuration for the full list and the matching CELERIANT_ environment variables.

LimitDefaultFlag
Max client request size16 MiB--max-request-size
Max response size64 MiB--max-response-size
Max inter-node request size64 MiB--internode-max-request-size
Max requested watch latency2000 ms--max-requested-latency-ms
Max schema definition size16 KiB--max-schema-size-bytes
List page size2000 entities--list-page-size
Max concurrent list scans (per shard)16--list-max-concurrent
Max concurrent reads (per shard)64--read-max-concurrent
Slow-client / idle timeout30 s--client-connection-timeout-ms
Max open files (per shard)1000--max-open-files
WAL file preallocation size1 GiB--shard-log-preallocate-bytes

Other defaults worth knowing

  • Shards: default to the CPU count (--num-shards).
  • Routing rule: aggregate_id (--routing-rule). Fixed at cluster init.
  • Aggregate version: 1-based. A version of 0 means "does not exist yet" for a conditional create.
  • Client request/response sizes are also capped on the client side; the client and server caps differ, and the client's defaults differ by language (the .NET client requests 30 s, the Rust client 2 s). See Clients.

These are not the cardinality limits people usually ask about: there is no fixed cap on the number of aggregates or events. Memory is bounded by the hot working set, not the total count. See Durability and safety.