Optimize SV1 block notify fanout

This commit is contained in:
Ben
2026-07-13 11:55:26 -04:00
parent 3d58802feb
commit c60264bbe5
17 changed files with 1799 additions and 169 deletions
+18 -1
View File
@@ -15,6 +15,11 @@ BITCOIN_RPC_TIMEOUT=10000
BLOCK_TEMPLATE_LONGPOLL_TIMEOUT_MS=600000
BLOCK_TEMPLATE_RETRY_INITIAL_MS=25
BLOCK_TEMPLATE_RETRY_MAX_MS=1000
# Optional comma-separated Bitcoin Core RPC endpoints. Each keeps an independent
# GBT longpoll open, but its template is published only when the primary Core's
# best block hash exactly authorizes the same tip. Endpoints currently share the
# primary RPC credentials/port.
#BITCOIN_RPC_AUX_URLS=http://bitcoin-core-2,http://bitcoin-core-3
# Enable in bitcoin.conf with:
# zmqpubrawblock=tcp://0.0.0.0:3000
@@ -43,7 +48,9 @@ SV2_AUTH_FAILURE_LOG_ENABLED=false
STRATUM_PORTS=3333,3332,3331,3330
# Optional PPLNS-mode SV1/SV2 autodetect ports.
#PPLNS_STRATUM_PORTS=
STRATUM_WORKERS=2
# `auto` assigns available CPUs after reserving API_WORKERS plus one master CPU.
# For fixed topology, set an explicit positive integer.
STRATUM_WORKERS=auto
STRATUM_WORKER_MAX_MEMORY_RESTART=4096M
# High-byte base for pool-assigned SV2 extranonce prefixes. PM2 reserves two
# values per NODE_APP_INSTANCE so an old/new reload pair cannot overlap. Keep
@@ -63,6 +70,16 @@ SV1_SUBSIDY_BRIDGE_ENABLED=true
# Comma-separated: solo,pplns. PPLNS requires a fresh precomputed snapshot;
# solo remains the safe default and is always published first when both are set.
SV1_SUBSIDY_BRIDGE_PAYOUT_MODES=solo
# Give the dedicated urgent Redis socket a short opportunity to acknowledge the
# empty bridge before full-template hashing/serialization begins. On timeout the
# master retries immediately through the independent normal command socket.
SV1_BRIDGE_PUBLISH_BUDGET_MS=10
# Build next-height per-miner coinbases in background batches and yield between
# batches so normal share processing remains responsive.
SV1_PRESTAGE_BATCH_SIZE=500
# Operational target only: fanout logs flag workers above this client count so
# STRATUM_WORKERS can be raised before one event loop becomes the bottleneck.
STRATUM_FANOUT_TARGET_CLIENTS_PER_WORKER=10000
SV1_SUBSIDY_BRIDGE_PPLNS_SEED_MAX_AGE_MS=300000
STRATUM_JOB_RETENTION_MS=300000
STRATUM_SUBMISSION_DEDUP_TTL_MS=300000