🔍 故障排查
本指南涵盖使用 ShredStream.com 时可能遇到的常见问题及其解决方法。
使用我们的 SDK? SDK 自动处理数据包解析和验证。以下与网络相关的问题(firewall、IP、buffer 调优)无论使用 SDK 还是原始 UDP 监听器均适用。
❌ 未收到数据
如果 UDP 监听器正在运行但没有 shreds 到达:
- 检查 firewall——确保 firewall 允许您配置端口的入站 UDP 流量。在 Linux 上:
bashsudo ufw allow <port>/udp
- 确认数据流已激活——打开 仪表盘,确认数据流状态为 活跃。已过期或暂停的数据流不会发送数据。如果状态显示为 配置中 或 Error,请稍等片刻并刷新页面。如果状态无变化,请在 Discord 联系技术支持。
- 确认 IP 地址匹配——数据流中的目标 IP 必须与服务器的公网 IP 完全一致。您可以这样查看公网 IP:
bashcurl -4 ifconfig.me
- 绑定到 0.0.0.0——确保 UDP socket 绑定到
0.0.0.0,而非127.0.0.1或特定接口 IP。绑定到 localhost 会静默丢弃所有外部流量。
📉 高丢包率
Shreds 通过 UDP 传送,不会重传丢失的数据包。最大限度减少丢包至关重要。
-
将 UDP 接收 buffer 增大到至少 25 MB:
bash# 查看当前值sysctl net.core.rmem_max# 设为 25 MBsudo sysctl -w net.core.rmem_max=26214400sudo sysctl -w net.core.rmem_default=26214400**注意:**Linux 会将通过
setsockopt()设置的值翻倍。如果您请求 25 MB,内核会分配 50 MB。sysctl值是翻倍前的上限。 -
选择更近的区域——延迟和丢包率随距离增加。在数据流设置中选择离服务器最近的区域。
-
避免在接收循环中使用阻塞 I/O——调用
recvfrom()的线程中的任何处理延迟都会导致内核 buffer 填满并丢包。将解析和业务逻辑分离到单独的线程。 -
监控内核丢包:
bash# 单个 socket 丢包(Linux)ss -u -a -n# 系统级 UDP 统计netstat -su关注
RcvbufErrors或packet receive errors计数器。如果该数字持续增长,说明 buffer 太小或应用读取速度不够快。
💳 支付未确认
支付在 Solana 区块链上处理。如果支付看起来卡住了:
- 等待 30 到 60 秒——Solana 交易通常在几秒内确认,但网络拥堵可能导致延迟。
- 确保发送了足够的 SOL——发送金额必须与支付窗口中显示的金额一致。如果从交易所支付,请考虑提现手续费,确保完整金额到达支付地址。
如果交易在链上失败,您可以在仪表盘中重试支付。
⚠️ 数据流意外停止
如果之前正常工作的数据流停止传送 shreds:
- 检查到期日——打开仪表盘上的数据流详情页。如果数据流已过期,请续订以恢复传送。
- 确认区域状态——偶尔某个区域可能需要维护。请在仪表盘中查看区域状态通知。
- 联系技术支持——如果数据流显示为活跃且区域运行正常,请在 Discord 的 #ticket 频道提交工单寻求帮助。
🌍 区域更改失败
区域更改失败时,ShredStream.com 会自动回滚到原始区域,确保数据流不受影响。
- 检查目标区域容量——您选择的区域可能暂时已满。请稍后重试。
- 确认数据流处于活跃状态——只能对活跃数据流执行区域更改。已过期或出错的数据流需要先续订。
- 尝试其他区域——如果目标区域持续不可用,选择一个地理位置相近的替代区域。
更改失败后,数据流继续在原始区域运行,不会丢失数据。
🔌 连接问题
如果无法创建数据流或遇到连接错误:
- 使用公网 IPv4 地址——ShredStream.com 仅向公网 IP 传送数据。以下私有地址段不可用:
10.0.0.0/8172.16.0.0/12192.168.0.0/16
- 使用 1024 到 65535 之间的端口——1024 以下的端口为保留端口,可能需要 root 权限或被托管商屏蔽。
- 确保 NAT 不阻止入站 UDP——如果服务器位于 NAT 网关后面(云服务商中常见),请确保 NAT 或安全组将所选端口的 UDP 流量转发到您的实例。
💬 仍需帮助?
如果以上方法均未解决您的问题,请联系我们的技术支持团队:
- **Discord(最快):**在 #ticket 频道提交工单
- Telegram:@shredstream
请附上您的数据流 ID、服务器区域和问题描述,以便我们尽快为您处理。