🌐 网络配置
在服务器接收 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/udpsudo firewall-cmd --reload
如果您的服务器位于云服务商的安全组(AWS、GCP、Azure 等)后面,您还需要在云控制台中允许同一端口的入站 UDP 流量。
📐 UDP Buffer 调优
Solana 验证者以极高的速率产出 shreds。Linux 默认 UDP 接收 buffer 通常为 256 KB,远远不够,在高负载下会导致丢包。请将接收 buffer 设置为至少 25 MB。
⚡ 立即生效
bash
# Linuxsudo sysctl -w net.core.rmem_max=26214400sudo sysctl -w net.core.rmem_default=26214400# macOSsudo sysctl -w kern.ipc.maxsockbuf=33554432
💾 跨重启持久化
bash
echo 'net.core.rmem_max=26214400' | sudo tee -a /etc/sysctl.confecho '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 未到达时的检查清单:
- 仪表盘状态——确认数据流显示 活跃,且连接 IP 和端口与您的服务器一致。
- Firewall——验证 UDP 端口已开放。从另一台机器测试:
nc -u <your-ip> 8001。 - 公网 IP——确保您输入的是服务器的公网 IPv4 地址,而非私有或内部 IP。
- Buffer 大小——运行
sysctl net.core.rmem_max确认 buffer 至少设为 26214400。 - 监听器绑定——确保监听器绑定到
0.0.0.0(所有接口),而非127.0.0.1(仅本地)。