Pooling Options

Read time 2 minutes Package: Nalix.Network
On this page

Namespace: Nalix.Network.Internal.Initialization
Assembly: Nalix.Network

Source Mapping

  • src/Nalix.Network/Internal/Initialization/NetworkPoolInitializer.cs
  • src/Nalix.Network/Options/ConnectionGuardOptions.cs
  • src/Nalix.Network/Options/NetworkSocketOptions.cs

How Network Pools Are Sized

NetworkPoolInitializer configures ObjectPoolManager capacities and preallocations in three phases:

  1. Static Constructor (static NetworkPoolInitializer()): Reads ConnectionGuardOptions.MaxConnections (default 2000) and NetworkSocketOptions.MaxParallel (default 1), executes all SetMaxCapacity<T> registrations across all network pool types, and preallocates PooledAcceptContext (MaxParallel), PooledSocketAsyncEventArgs (MaxParallel * 4), TimingWheel.TimeoutTask (128), ConnectionBacking (128), ConnectionEventArgs (256), and PooledConnectEventContext (256).
  2. TCP Initialization (NetworkPoolInitializer.InitializeTcp()): Invoked by static Connection() (zero parameters) to preallocate SocketConnection (128), SocketUdpTransport (64), SocketTcpTransport (128), ProxyHeaderContext (128), and PooledSocketReceiveContext (128).
  3. WebSocket Initialization (NetworkPoolInitializer.InitializeWebSocket()): Invoked by static WebSocketConnection() to preallocate WebSocketTransport (128).

Pool Capacity and Preallocation Matrix

Pooled TypeMax Capacity Formula (SetMaxCapacity in .cctor)Preallocated InstancesPreallocated By
SocketConnectionMaxConnections (2000)128InitializeTcp()
ConnectionBackingMaxConnections (2000)128Static constructor
SocketTcpTransportMaxConnections (2000)128InitializeTcp()
SocketUdpTransportMaxConnections (2000)64InitializeTcp()
WebSocketTransportMaxConnections (2000)128InitializeWebSocket()
ProxyHeaderContextMaxConnections (2000)128InitializeTcp()
TimingWheel.TimeoutTaskMaxConnections (2000)128Static constructor
PooledSocketReceiveContextMaxConnections (2000)128InitializeTcp()
ConnectionEventArgs(MaxConnections * 2) + 1024 (5024)256Static constructor
PooledConnectEventContext(MaxConnections * 2) + 1024 (5024)256Static constructor
PooledAcceptContext(MaxParallel * 2) + 32 (34)MaxParallel (1)Static constructor
PooledSocketAsyncEventArgsMaxParallel + 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;
});