Pooling Options
On this page
Namespace: Nalix.Network.Internal.Initialization
Assembly: Nalix.Network
Source Mapping
src/Nalix.Network/Internal/Initialization/NetworkPoolInitializer.cssrc/Nalix.Network/Options/ConnectionGuardOptions.cssrc/Nalix.Network/Options/NetworkSocketOptions.cs
How Network Pools Are Sized
NetworkPoolInitializer configures ObjectPoolManager capacities and preallocations in three phases:
- Static Constructor (
static NetworkPoolInitializer()): ReadsConnectionGuardOptions.MaxConnections(default2000) andNetworkSocketOptions.MaxParallel(default1), executes allSetMaxCapacity<T>registrations across all network pool types, and preallocatesPooledAcceptContext(MaxParallel),PooledSocketAsyncEventArgs(MaxParallel * 4),TimingWheel.TimeoutTask(128),ConnectionBacking(128),ConnectionEventArgs(256), andPooledConnectEventContext(256). - TCP Initialization (
NetworkPoolInitializer.InitializeTcp()): Invoked bystatic Connection()(zero parameters) to preallocateSocketConnection(128),SocketUdpTransport(64),SocketTcpTransport(128),ProxyHeaderContext(128), andPooledSocketReceiveContext(128). - WebSocket Initialization (
NetworkPoolInitializer.InitializeWebSocket()): Invoked bystatic WebSocketConnection()to preallocateWebSocketTransport(128).
Pool Capacity and Preallocation Matrix
| Pooled Type | Max Capacity Formula (SetMaxCapacity in .cctor) | Preallocated Instances | Preallocated By |
|---|---|---|---|
SocketConnection | MaxConnections (2000) | 128 | InitializeTcp() |
ConnectionBacking | MaxConnections (2000) | 128 | Static constructor |
SocketTcpTransport | MaxConnections (2000) | 128 | InitializeTcp() |
SocketUdpTransport | MaxConnections (2000) | 64 | InitializeTcp() |
WebSocketTransport | MaxConnections (2000) | 128 | InitializeWebSocket() |
ProxyHeaderContext | MaxConnections (2000) | 128 | InitializeTcp() |
TimingWheel.TimeoutTask | MaxConnections (2000) | 128 | Static constructor |
PooledSocketReceiveContext | MaxConnections (2000) | 128 | InitializeTcp() |
ConnectionEventArgs | (MaxConnections * 2) + 1024 (5024) | 256 | Static constructor |
PooledConnectEventContext | (MaxConnections * 2) + 1024 (5024) | 256 | Static constructor |
PooledAcceptContext | (MaxParallel * 2) + 32 (34) | MaxParallel (1) | Static constructor |
PooledSocketAsyncEventArgs | MaxParallel + MaxConnections (2001) | MaxParallel * 4 (4) | Static constructor |
Tuning Network Pool Capacities
To scale pool retention for higher concurrency ceilings, configure ConnectionGuardOptions and NetworkSocketOptions before building the host:
using Nalix.Hosting;
using Nalix.Network.Options;
INetworkApplicationBuilder builder = NetworkApplication.CreateBuilder();
builder.Configure<ConnectionGuardOptions>(options =>
{
options.MaxConnections = 10_000;
});
builder.Configure<NetworkSocketOptions>(options =>
{
options.MaxParallel = 16;
});