与SLES9相比,SLES10实现Tcp套接字的方式有什么重要的变化吗?
我有几个用C# (Windows3.5)编写的应用程序,它们可以在Windows XP和Windows Server2003上运行。他们已经运行了一年多,使用套接字连接从SLES9机器获取市场数据。
这台机器今天升级到了SLES 10,它导致了一些奇怪的行为。套接字通常每秒返回几百或数千个字节。但偶尔,我会停止接收数据。10秒或更长的时间将在没有数据的情况下过去,然后接收带有10k+字节的返回。一些缓冲区导致数据丢失,因为我在套接字上收到的字节不再构成正确的数据包。
唯一改变的是SLES9到10的升级。回滚可以立即修复此问题。有什么想法吗?
发布于 2010-04-20 00:40:11
丢弃的数据包可以通过将smb内核升级到2.6.16.60-0.37或更高版本来解决。BNX2内核模块是丢弃数据包的根本原因。这是SLES10开箱即用时的一个已知问题。
参考:http://www.novell.com/support/search.do?cmd=displayKC&sliceId=SAL_Public&externalId=7002506
发布于 2009-12-10 08:31:15
/proc/sys/net设置的默认值可能已更改。也许更新的SLES支持像tcp_ecn这样的东西?
如果您的网络正在使用SLES10丢弃一些它不喜欢的数据包,那么它可能正在启用新的TCP功能。否则我就不知道了。我会用tcpdump/wireshark查看它。也许还可以对服务器进程进行策略分析,看看它在做什么系统调用。
SLES是发送方,因此可能发生了一些改变,使得它决定等待,直到拥有完整的数据窗口或其他东西。但是10k太多了。听起来更像是丢弃的数据包,然后当丢失的数据包最终到达时返回大量数据,允许队列中的数据也被返回。
https://stackoverflow.com/questions/1719697
复制相似问题