Tài liệu

Tùy chọn pooling

Thời gian đọc 3 phút Gói: Nalix.Network
Trên trang này

Không gian tên: Nalix.Network.Internal.Initialization
Assembly: Nalix.Network

Ánh xạ mã nguồn

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

Cách kích thước pool mạng

NetworkPoolInitializer cấu hình dung lượng và số lượng cấp phát trước của ObjectPoolManager qua ba giai đoạn:

  1. Static constructor (static NetworkPoolInitializer()): Đọc ConnectionGuardOptions.MaxConnections (mặc định 2000) và NetworkSocketOptions.MaxParallel (mặc định 1), thực hiện tất cả các đăng ký SetMaxCapacity<T> cho mọi kiểu pool mạng, và cấp phát trước PooledAcceptContext (MaxParallel), PooledSocketAsyncEventArgs (MaxParallel * 4), TimingWheel.TimeoutTask (128), ConnectionBacking (128), ConnectionEventArgs (256) và PooledConnectEventContext (256).
  2. Khởi tạo TCP (NetworkPoolInitializer.InitializeTcp()): Được static Connection() gọi (không tham số) để cấp phát trước SocketConnection (128), SocketUdpTransport (64), SocketTcpTransport (128), ProxyHeaderContext (128) và PooledSocketReceiveContext (128).
  3. Khởi tạo WebSocket (NetworkPoolInitializer.InitializeWebSocket()): Được static WebSocketConnection() gọi để cấp phát trước WebSocketTransport (128).

Ma trận dung lượng và cấp phát trước

Kiểu được poolCông thức dung lượng tối đa (SetMaxCapacity trong .cctor)Số instance cấp phát trướcCấp phát bởi
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

Điều chỉnh dung lượng pool mạng

Để tăng khả năng giữ pool với trần đồng thời cao hơn, hãy cấu hình ConnectionGuardOptions và NetworkSocketOptions trước khi xây dựng 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;
});

API liên quan