【问题标题】:SLES 9 vs. SLES 10SLES 9 与 SLES 10
【发布时间】:2010-12-15 17:41:03
【问题描述】:

与 SLES 9 相比,SLES 10 实现 Tcp 套接字的方式是否有任何重要变化?

我有几个用 C# (.NET 3.5) 编写的应用程序,它们在 Windows XP 和 Windows Server 2003 上运行。它们运行良好一年多,使用套接字连接从 SLES 9 机器获取市场数据。

这台机器今天升级到 SLES 10 并导致一些奇怪的行为。套接字通常每秒返回几百或几千个字节。但偶尔,我会停止接收数据。十秒或更长时间没有数据,然后接收返回 10k+ 字节。一些缓冲区导致数据丢失,因为我在套接字上收到的字节不再是正确的数据包。

唯一改变的是 SLES 9 到 10 的升级。回滚会立即解决此问题。有任何想法吗?

【问题讨论】:

    标签: linux networking sockets tcp suse


    【解决方案1】:

    /proc/sys/net 设置的默认值可能已更改。也许较新的 SLES 启用了 tcp_ecn 之类的功能?

    如果您的网络丢弃了一些 SLES10 不喜欢的数据包,那么它可能启用了较新的 TCP 功能。否则我不知道。我会用 tcpdump/wireshark 来看看它。并且可能 strace 服务器进程以查看它正在执行的系统调用。

    SLES 是发送者,因此可能发生了一些变化,导致它决定等到它有一个完整的数据窗口或其他东西。但是10k太多了。听起来更像是丢包,然后在丢失的数据包最终到达时大量返回,从而允许返回排队的数据。

    【讨论】:

      【解决方案2】:

      可以通过将 smb 内核升级到 2.6.16.60-0.37 或更高版本来解决丢失的数据包。 BNX2内核模块是丢包的根本原因。这是 SLES 10 开箱即用的一个已知问题。

      参考:http://www.novell.com/support/search.do?cmd=displayKC&sliceId=SAL_Public&externalId=7002506

      【讨论】:

      • 您好安东尼,感谢您的回答,尽管这个问题已经很老了。不幸的是,系统管理员说我们已经在使用更高版本的驱动程序。所以我不认为是这样。
      猜你喜欢
      • 2016-03-21
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 2020-12-18
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多