Tùy chọn pooling
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.cssrc/Nalix.Network/Options/ConnectionGuardOptions.cssrc/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:
- Static constructor (
static NetworkPoolInitializer()): ĐọcConnectionGuardOptions.MaxConnections(mặc định2000) vàNetworkSocketOptions.MaxParallel(mặc định1), 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ướcPooledAcceptContext(MaxParallel),PooledSocketAsyncEventArgs(MaxParallel * 4),TimingWheel.TimeoutTask(128),ConnectionBacking(128),ConnectionEventArgs(256) vàPooledConnectEventContext(256). - Khởi tạo TCP (
NetworkPoolInitializer.InitializeTcp()): Đượcstatic Connection()gọi (không tham số) để cấp phát trướcSocketConnection(128),SocketUdpTransport(64),SocketTcpTransport(128),ProxyHeaderContext(128) vàPooledSocketReceiveContext(128). - Khởi tạo WebSocket (
NetworkPoolInitializer.InitializeWebSocket()): Đượcstatic WebSocketConnection()gọi để cấp phát trướcWebSocketTransport(128).
Ma trận dung lượng và cấp phát trước
| Kiểu được pool | Công thức dung lượng tối đa (SetMaxCapacity trong .cctor) | Số instance cấp phát trước | Cấp phát bởi |
|---|---|---|---|
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 |
Đ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;
});