SLES 10如何实现Tcp套接字与SLES 9的重大改变?
我有几个用C#(.NET 3.5)编写的应用程序在Windows XP和Windows Server 2003上运行。它们运行良好超过一年,使用套接字连接从SLES 9机器获取市场数据。
今天机器升级到SLES 10并导致一些奇怪的行为。套接字通常每秒返回几百或几千字节。但偶尔,我会停止接收数据。没有数据将持续十秒或更长时间,然后以10k +字节返回Receive。并且一些缓冲区导致数据丢失,因为我在套接字上收到的字节不再生成正确的数据包。
唯一改变的是SLES 9到10的升级。并且回滚立即修复此问题。有任何想法吗?
答案 0 :(得分:1)
可以通过将smb内核升级到2.6.16.60-0.37或更高版本来解决丢弃的数据包。 BNX2内核模块是丢弃数据包的根本原因。这是SLES 10开箱即用的已知问题。
参考:http://www.novell.com/support/search.do?cmd=displayKC&sliceId=SAL_Public&externalId=7002506
答案 1 :(得分:0)
/ proc / sys / net设置的默认值可能已更改。也许更新的SLES可以实现像tcp_ecn这样的东西?
如果您的网络丢弃了一些与SLES10不相似的数据包,那么它可能会启用更新的TCP功能。否则我不知道。我会用tcpdump / wireshark来看看它。并且可能会对服务器进程进行分析,以查看它正在执行的系统调用。
SLES是发件人,因此有可能发生某些变化,使其决定等到它有一个完整的数据窗口或其他东西。但是10k太多了。听起来更像是丢弃的数据包,然后在丢失的数据包最终到达时返回一个大的返回,允许返回排队的数据。