🌐 网络配置

在服务器接收 shreds 之前——无论通过我们的 SDK 还是原始 UDP 监听器——您都需要开放正确的端口并调优操作系统网络 buffer。

使用我们的 SDK? SDK 会自动配置 socket 接收 buffer。您仍需完成以下 firewall 和操作系统调优步骤。


🔒 Firewall 配置

开放您在 ShredStream.com 上配置的 UDP 端口。具体命令取决于您的 Linux 发行版。

🔹 UFW (Ubuntu / Debian)

bash
sudo ufw allow 8001/udp

🔹 iptables

bash
sudo iptables -A INPUT -p udp --dport 8001 -j ACCEPT

如需跨重启持久化规则,请使用 iptables-save 或您发行版的持久化机制(如 netfilter-persistent)。

🔹 firewalld (CentOS / RHEL / Fedora)

bash
sudo firewall-cmd --permanent --add-port=8001/udp
sudo firewall-cmd --reload

如果您的服务器位于云服务商的安全组(AWS、GCP、Azure 等)后面,您还需要在云控制台中允许同一端口的入站 UDP 流量。


📐 UDP Buffer 调优

Solana 验证者以极高的速率产出 shreds。Linux 默认 UDP 接收 buffer 通常为 256 KB,远远不够,在高负载下会导致丢包。请将接收 buffer 设置为至少 25 MB

⚡ 立即生效

bash
# Linux
sudo sysctl -w net.core.rmem_max=26214400
sudo sysctl -w net.core.rmem_default=26214400
# macOS
sudo sysctl -w kern.ipc.maxsockbuf=33554432

💾 跨重启持久化

bash
echo 'net.core.rmem_max=26214400' | sudo tee -a /etc/sysctl.conf
echo 'net.core.rmem_default=26214400' | sudo tee -a /etc/sysctl.conf

然后验证:

bash
sysctl net.core.rmem_max net.core.rmem_default

两个值均应显示为 26214400

跳过 buffer 调优是导致 shreds 丢失最常见的原因。如果您的监听器报告数据出现间断,请首先检查 buffer 设置。


✅ 验证配置

SDK 监听器运行且数据流在 ShredStream.com 仪表盘上处于活跃状态后,您应该在几秒钟内看到输出。

shreds 未到达时的检查清单:

  1. 仪表盘状态——确认数据流显示 活跃,且连接 IP 和端口与您的服务器一致。
  2. Firewall——验证 UDP 端口已开放。从另一台机器测试:nc -u <your-ip> 8001
  3. 公网 IP——确保您输入的是服务器的公网 IPv4 地址,而非私有或内部 IP。
  4. Buffer 大小——运行 sysctl net.core.rmem_max 确认 buffer 至少设为 26214400。
  5. 监听器绑定——确保监听器绑定到 0.0.0.0(所有接口),而非 127.0.0.1(仅本地)。

如果一切检查通过但仍未收到数据,请参阅 故障排查 或通过 Discord 联系我们。

网络配置 — Documentations | ShredStream.com