流量、额度与限制
本页跟随用户的流量,从承载它的节点一直到用户页面上的数字,并说明账户上的每种限制在何处生效。设置限制的方法见 用户 和 套餐。
收集流量
节点在内存中按入站、按出站、按用户计数字节。面板每 30 秒收集一次所有节点的计数器:
- 节点在上报每个计数器的同时将其清零,所以每个字节恰好上报一次。
- 面板在一个数据库事务中写入一整次收集的数据。 如果写入失败,这次收集会保留在内存中,并加到下一次里,所以数据库繁忙也不会丢失数据。
- 与面板断开的节点 会继续计数,直到停止服务。如果它在面板再次访问到它之前就停止了,那么面板上次收集之后它承载的流量会丢失;参见 节点与面板。
一次收集,两份记录
每次收集都会同时写入两个地方:
| 记录 | 用途 | 保留期 |
|---|---|---|
| 账本:按节点、按用户、按节点和用户,以及每个账户的总计 | 额度、代理商配额、报表 API(/api/reports/*) | 永久 |
| 图表序列:按时间分桶的原始字节 | 流量图表 | 按统计保留期,默认 30 天;设为 0 则停止记录 |
报表读取的是账本,所以关闭图表永远不会改变账户的计费或报表的内容。节点的图表和它的累计总量来自同一批样本,所以两者不会不一致。
节点倍率
节点的 流量倍率 按比例调整其用户被计费的流量。倍率为 2 时,经过该节点的 1 GB 会从用户额度和其代理商配额中扣除 2 GB。节点自己的数据和它的周期限制仍按原始字节计算。
隧道与端点
- 经过隧道的流量在用户连接的中继节点上计费。在源节点上不会再次计费。
- WireGuard 或 OpenVPN 端点在端点名下分别统计对等端发送的流量和它转发的流量,面板把两者相加。
在线
账户在最近 90 秒内有流量即为在线。每个节点的在线数,是同一时间窗口内有流量经过该节点的账户数。关闭图表序列后,按节点的在线数无从得知,显示为一条短横线而不是零。
额度与到期
面板每分钟根据流量额度、到期日期,以及(对代理商的客户而言)代理商的配额和到期时间,判断每个账户。
- 超出限制的账户会被停用,在它所在的每个节点上实时生效,无需重启任何东西,面板会发出一个说明原因的事件。
- 回到限制范围内的账户(已续期、增加了流量、已重置)会被同一项检查重新启用。
- 被人工停用的账户保持停用。 每分钟的检查从不重新启用由你或批量操作手动停用的账户,即使它在限制范围内。
从首次使用开始计算的时长
套餐可以是一段时长(例如 30 天),而不是一个日期。这时账户在等待第一次连接,到期时间尚不执行。节点上报它的流量后的第一分钟,到期时间被设为那一刻加上时长。获取订阅不会开始计时:那只说明某个应用读取了链接,而不说明有人连接了。
重置周期
周期会把账户的流量清零并重新开始。
| 周期 | 重置时间 |
|---|---|
| 滚动 | 距上次重置每隔若干天 |
| 每周、每月、每年 | 在设定的星期几、每月某日或某个日期,使用公历或波斯历 |
每一步都从锚点开始计算,而不是从上次重置开始,所以锚定在 31 日的账户在 2 月的 28 日重置,3 月又回到 31 日。与其他一切一样,重置在每分钟的检查中执行。
达到限制前的警告
同一轮每分钟的检查会在账户仍可使用时发出一次警告:
- 用量超过额度的一定比例(默认 80%)时发出
user.quota_warning; - 到期时间进入到期日前的某个窗口(默认 7 天和 1 天)时发出
user.expiring。
每个阈值的警告只发出一次,并记录在数据库中,所以重启面板不会重复发送。售出更多流量或续期后会重新启用警告。Telegram、电子邮件和插件可以把警告转达给客户;参见 事件总线。
地址数限制
地址数限制 限定一个账户在整个节点群中同时可以从多少个源地址连接。
- 节点自行接纳新地址:只要它所看到的该账户地址数低于限制,就无需针对每个连接询问面板。
- 每 10 秒,面板合并所有节点看到的地址,把每个受限账户裁剪到其限制(保留最近出现的),再把结果发回。
- 地址表到达节点后,来自超额地址的连接会被拒绝。
因此这 10 秒的一轮,就是账户可能在多个节点上短暂超出限制的窗口。IPv4 地址单独计数,IPv6 地址按其 /64 计数。地址在最后一次出现后继续计数十分钟,这样切换网络的手机不会把自己锁在外面。观察到的地址只保存在内存中;只有限制本身被存储。面板显示账户当前的地址时,读取的是同一份合并视图,读取它永远不会改变节点群执行的内容。
速度限制
速度限制 以 Mbps 为单位限定账户每个方向的流量,并且在每个节点上分别生效:20 Mbps 的限制允许账户在同时连接的每个节点上都使用 20 Mbps。一台机器数据路径内的速率预算无法在多台机器之间共享。修改限制永远不会让它成倍增加;取消后又恢复的限制也会作用于已经打开的连接。
设备数限制
设备数限制 是对下发的限制,而不是对连接的限制。节点看到的是地址,从来看不到设备。只有当获取订阅的应用发送了设备 id 时(有几个应用会这样做),面板才能看到设备。
- 超出限制的设备会被拒绝获取订阅和页面。
- 已经持有配置的设备会继续连接,直到你在账户上释放它的位置。
- 不发送设备 id 的应用照常获得服务,除非开启了 设备限制拒绝无设备标识的客户端。
地址数限制是防共享中的并发部分,设备数限制是分发部分。两者应配合使用。
节点自己的限制
节点可以有每周、每月或每年的周期流量限制。当它在本周期内的原始流量超过限制时,面板会停用该节点直到下一个周期,届时再重新启用,除非是你自己停用了它。
代理商的配额
代理商的配额是计算出来的,从不存储:自其周期开始以来,它拥有的所有账户的流量,按每个节点的倍率换算。
- 超出配额或过了到期时间时,它的所有账户都会被每分钟的检查停用;周期滚动或代理商续期后,这些账户会恢复。
- 已到期的代理商无法登录面板,其 API 令牌也会失效,直到续期为止。
参见 代理商。
