家宽节点的出站预算:maxuploadtarget 软闸门怎么分级丢数据 图 1
家宽节点的出站预算:maxuploadtarget 软闸门怎么分级丢数据 · 图 1

一条限制流量的软闸门怎么工作

家宽或按流量计费的服务器上跑比特币节点,最容易先爆炸的不是磁盘而是上行。比特币节点默认慷慨:谁来了都尽量服务,区块同步期的历史区块几乎会把你一个月的配额喂给一个陌生新节点。-maxuploadtarget 就是为了这类场景设计的软闸门,官方文档把它定义为试图把每 24 小时的出站流量控制在给定目标内,单位 MiB 每天,默认关闭。

闸门怎么落闸

它是阈值而非硬限。节点按 24 小时滚动窗口统计出站字节,逼近目标时开始分级牺牲:首先停止向新节点提供一周以外的历史区块,其次停止供应过滤区块等低优先请求;带下载权限的对等体和最近一周的区块不参与削减。官方文档同时给出提醒:新节点需要别人愿意提供历史区块,因此若真的在意带宽下限,建议至少留出每天约 144 个区块量级的余量,这也是文档推荐的最低目标值。带特殊权限的白名单邻居的流量计入统计但永远不断线,这一条在配置白名单权限时要心里有数。

设置值的两个极端

值设太小的典型症状是节点变成只进不出的黑洞:你的节点照常下载、照常发交易,却几乎没有节点能从你这里拿到历史数据,网络的互惠均衡被破坏;值设太大等于没设,超额照旧。常见的中间做法是把目标定在套餐流量的七到八成,留出突发余量,再配合收紧入站与缓存参数观察一周,看 getnettotals 的 24 小时曲线是否平滑。

别忘了它不是什么

它不加速你的下载,不改变区块存储占用,也不是隐私工具——被削减的只是历史区块的重放服务,交易与区块头的中继基本不受影响。另外它与 -persistmempool 无关:内存池快照文件是本地读写,不占这个配额。对带宽硬约束的用户,官方推荐的组合还包括修剪模式、减少出站连接数与只在必要时开监听,这些手段各自省下的东西不同,先弄清哪种流量在预算里占大头,再决定开哪几扇门。具体参数语义与默认值以比特币核心你正在使用的版本文档为准,本文不构成任何运营或收益承诺。

与系统级手段的分工

节点参数之外,传输层还有两类选择:修剪模式直接少存区块,本来就发不出历史数据,属于釜底抽薪;防火墙或带宽整形做硬限速,简单但会误伤握手与首连。maxuploadtarget 的独特价值在于它会先保关键服务再砍数据重放:区块中继、交易传播、紧凑块与过滤器这类活数据优先级在前,纯历史区块往后排。按流量计费的云端节点,推荐组合通常就是修剪加上一个留有余量的目标值,再开 getnettotals 的周期采样,两周数据定一次档位。

两个容易踩的语义细节

一是计数口径:目标是尽力而为,突发同步时短期突破目标不会得到惩罚,但突破期里它会先于你的预算耗尽而对全网关闸,所以留百分之二三十的余量比贴线设置更稳。二是历史区块一周豁免的含义:你自己刚产生的区块仍会被正常喂给同步中的邻居,这部分流量不可谈。参数默认关闭、单位随大小写不同按千或按 1024 换算等细节,以你正在使用的比特币核心版本说明为准。