由于时间戳原因,已建立的连接中大量数据包被拒绝

由于时间戳原因,已建立的连接中大量数据包被拒绝

我正在尝试使用配备 24GB 内存和 10Gbit 连接的 Dell R710 设置 Wowza 媒体服务器,所有计算都表明它应该能够处理大约 20k 个连接,但是当我达到大约 9000 个连接时,Wowza 开始丢弃数据包,因为它认为这些数据包太晚了,无法传送。我还注意到传入连接的数量有所减少。

在 9000 个连接时,带宽输出约为 3 - 4gbps。该流是实时流,因此没有磁盘 io。

传入连接以每 3/4 秒 1 个新连接的速率从同一机架中的其他 4 台服务器生成,因此几乎没有延迟,并且只有一个交换机将它们全部连接起来。

当数据包开始丢失时,我注意到一个计数器开始上升,packets rejects in established connections because of timestamp

这个计数器是什么意思以及我该如何修复它。

我们检查了所有的 tcp 设置,但似乎找不到正确的组合来获得超过 9000 个连接而不丢失数据包。我们还检查了交换机和路由器上的所有设置,但找不到罪魁祸首。

操作系统目前是 OpenSuse 11.4,我们之前也尝试过 Centos 5.6,结果相同。

我们也尝试了多个 Wowza 实例来在不同的 JVM 之间分散负载,但结果仍然是相同的。

答案1

尝试按如下方式设置这些内核参数:

  • net.ipv4.tcp_tw_recycle = 0
  • net.ipv4.tcp_tw_reuse = 0
  • net.ipv4.tcp_timestamps = 0

tcp_timestamps 和 tcp_tw_recycle 可能导致“由于时间戳而拒绝已建立的连接”。

相关内容