我有一个与Windows 2008 R2,SQL Server 2012和Tomcat 7的AWS服务器。当我运行netstat -ano屏幕充斥着TIME_WAIT 。 我在Gist上发布了输出 。 当我运行CurrPorts ,过滤端口1433,并打开自动刷新,我可以看到sqlserver.exe连接从端口1433到一个短暂的端口,反之亦然。 我试图研究为什么会发生这种情况,但这总是一个死胡同。 有谁知道为什么? PS 有关AWS Bug的答案似乎很有希望,但是从2011年开始,他们遇到了一个不同的问题。 我的服务器上的连接最终closures。 我只是不知道为什么他们这么频繁地打开。
当实现快速重传时,如果我接收到数据包1 ,那么我将发送一个ACK,表示我需要数据包2 ,然后如果我收到数据包3 ,我将发送一个重复的ACK,表示需要数据包2 (而不是数据包4 )。 但是发送端的数据包2也会有一个重传计时器,也就是说,是否有一个计时器等待数据包2的ACK到达,如果没有到达则重传? 我认为答案是肯定的,因为如果重复的ACK丢失了! 这是正确的还是我错过了什么?
(这个问题原本是堆栈溢出的 ,Andy告诉我可以在这里得到更快的帮助,所以现在重新贴出来。) 我正在尝试在Linux上调整TCP缓冲区大小,但各种结果让我感到困惑。 testing程序包括一个服务器和一个客户端。 服务器只是监听一个端口,等待客户端从一个mmaped文件发送数据。 接收的数据使用recv复制到应用程序缓冲区,然后丢弃。 在发送数据时,客户端使用send完整大小的mmapped缓冲区作为初始参数。 程序在两个不同的数据中心的两个节点上运行,它们之间的ping响应时间约为9毫秒。 两个节点都安装了两个千兆以太网控制器。 最大吞吐量为256 MB / s,发送/接收缓冲区大小的适当设置应该是大约256 MB / s * 0.09 s〜2415919字节。 我做了几个实验。 在第一次运行中,我运行了一个服务器实例和一个客户端实例。 我没有设置发送缓冲区或接收缓冲区的大小,让内核自动调整它们。 这个案例的目的是build立其他实验的基线。 这个设置的实际吞吐量大约是117 MB / s。 在这种情况下,一对服务器和客户端仅使用一个或者两个networking控制器。 使用ifconfig检查,我发现大多数数据包通过eth0和eth1之间的单个接口。 然后我尝试了两台服务器和两台客户机,这次吞吐量提高到了225 MB / s左右,接近理想的最大吞吐量。 这是令我困扰的第一个问题: 为什么我需要多个进程来消耗带宽? FWIW,下面是/proc/net/bonding/bond0 : Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer3+4 (1) MII Status: up MII Polling Interval […]
所以看来,由于ICMPredirect,无法连接到VPN连接后面的服务器。 它立即回应一个TCP RST(在ssh_exchange_identification中读取:由对等体重置的连接) 我不完全确定如何发生,但这里是我的tcpdumps: 一旦启用了ICMPredirect: 08:28:31.457633 IP 10.21.0.100.55581 > 10.23.0.252.ssh: Flags [S], seq 4178119826, win 65535, options [mss 1368,nop,wscale 5,nop,nop,TS val 1170489744 ecr 0,sackOK,eol], length 0 08:28:31.457664 IP 10.23.0.252.ssh > 10.21.0.100.55581: Flags [S.], seq 2261371426, ack 4178119827, win 28960, options [mss 1460,sackOK,TS val 170122525 ecr 1170489744,nop,wscale 7], length 0 08:28:31.457781 IP 10.23.0.254 > 10.23.0.252: ICMP […]
我需要将Nginx访问和错误日志redirect到远程系统日志服务器。 从http://nginx.org/en/docs/syslog.html我看到我可以这样做: error_log syslog:server=192.168.1.1; 不过,我需要redirect到一个特定的TCP(而不是UDP!)端口,我试着: error_log syslog:server=192.168.1.1:3000; 但是没有通过。 如何指定Nginx的端口应该是TCP而不是UDP? 非常感谢!
我已经用Timeout 5configuration了/etc/apache2/apache2.conf而不是默认的300.所以我明白它应该在5秒钟不活动之后closures一个传入的连接。 但是我做了一个telnet localhost 80,等了5秒钟,没有任何反应。 netstat -na告诉我连接仍然是ESTABLISHED。 我离开了大约5分钟的连接,仍然没有发生任何事情。 任何线索为什么Apache不切断连接? 还是我误解Timeout指令? 在这种情况下,我应该寻找哪一个? 谢谢
我有一个networking应用程序,需要每秒发送60次的消息。 这些消息通常是300-400字节,但可以大到1500. SO_SNDBUF的默认设置太小,如果networking延迟大于100毫秒,限制可发送消息的数量。 天真的解决scheme是只是将SO_SNDBUF大小碰到一些大的东西。 但是,取决于延迟和数据包大小,可能在64K到8MB之间。 Vista的新function之一是TCP自动调整。 自动调整监视tcp连接并dynamic调整缓冲区大小以实现最佳通信。 我想在我们的Windows XP机器上使用自动调整,所以我不需要猜测我的缓冲区大小应该是什么。 有没有办法在windows xp上安装微软或第三方的tcp autotuner?
网站A:丹佛数据中心。 为60Mbps。 网站B:芝加哥。 100MBPS。 ICMP ping: 数据包:发送= 176,接收= 176,丢失= 0(丢失0%),以毫秒为单位的往返次数:最小= 74ms,最大= 94ms,平均= 75ms 永不过去的网站之间的文件传输〜7MBPS: http://www.bunker7.com/images/xfer1.jpg Windows Update下载60MBPS +: http://www.bunker7.com/images/xfer2.jpg 站点到站点:使用两个Cisco 5520的IPSec VPN。 3-4%的CPU和大量的内存。 到两个站点之间的延迟是非常可以接受的,所以我不能看到为什么它在两个站点之间传输时执行得太慢的问题。 我发现任何types的传输(FTP,HTTP,Windows文件共享)永远不会超过〜7MBPS。 当广域网初次build立时,我能够获得50-60MBPS的传输,这是由于站点A的60MBPS的WAN连接而预期的。 然后几天之后,我没能获得比〜7MBPS更快的速度。 丹佛和芝加哥之间有上游路由器造成这种情况吗? 我想从我们的设置中承担责任,因为Windows Update的下载速度非常快,在站点到站点VPN出现后的头几天,我以50-60MBPS的速度传输虚拟机映像。 我们的堆栈:HP P2000 MSA – > HP C7000机箱 – > HP Flex-10 – > Cisco千兆交换机 – > Cisco ASA – > WAN
我们有一台服务器接收一些数据,充当TCP客户端,以某种方式处理数据,并将处理后的数据作为TCP服务器提供给客户端。 它还将这些数据存储在磁盘上,并可以从文件而不是实时stream中提供。 问题是这个服务必须在24×7模式下可用,不允许中断。 现在有两台服务器,一台充当热备份 – 客户端保持与两台服务器的连接,如果主服务器发生故障,他们只需切换到备份。 虽然这个解决scheme已经运行了大约15年,但是这样做有点不方便,并且在客户端上放置了很多故障转移逻辑。 最近人们开始讨论如何使用集群来确保这个服务的可用性,但是无论我多么努力地search,我都找不到任何集群解决scheme来允许透明的TCP连接故障切换,所以没有人会注意到服务器发生了什么事情。 有一些研究论文,但我无法find任何工作的实现。 这是我认为它应该如何工作: 两台服务器都通过TCP接收数据。 理想情况下,它应该看起来像一个单一的连接到“外部”的世界,以节省带宽,更重要的是,确保两台服务器接收相同的数据stream。 当一个客户端连接到集群IP时,它在单个连接中接收处理的数据,但是两个服务器都应该看到这个连接并提供数据,只是其中一个stream实际到达客户端,备份到达/ dev / null,这样说。 当服务器发生故障(一段时间不传输任何数据,例如5秒钟)时,客户端应该继续在同一连接内接收相同的数据stream。 它需要发生得非常快,所以整个stream延迟不会超过大约10秒。 可靠性在这里是最重要的。 快速故障转移是下一个。 开源的Linux解决scheme是首选,但如果存在商业和/或非Linux近乎完美的解决scheme,我也想知道它们。 强加很多限制或需要修改服务器应用软件的解决scheme也是完全可以接受的。
我们的系统使用在Ubuntu 10.04上运行的Cassandra,在最后一次stream量峰值期间,我们在日志中观察到以下消息: possible SYN flooding on port 9160. Sending cookies. 这些机器不公开,stream量合法 – 来自我们自己的应用服务器。 有人知道内核进入调用者的“cookie”模式的后果是什么? 我知道服务器停止添加半开连接(SYN_RECV)的积压队列,但它会影响调用者(即我们的.NET应用程序)以任何方式吗? 是否有一些节stream/延迟踢,可能会开始一个恶性循环? 鉴于这些是内部机器,这种保护是否有意义? 那么默认值tcp_max_syn_backlog=1024呢?