Articles of tcp

HAProxy + NodeJS卡住TCP重传

我有一个HAProxy + NodeJS + Rails安装程序,我使用NodeJS服务器进行file upload。 我面对的问题是,如果我通过haproxy上传到nodejs,并且由于丢失的数据包而发生“TCP(快速)重传”,客户端上的TX速率将下降到零,持续约5-10秒,并被淹没与TCP重传。 如果我直接上传到NodeJS,则不会发生这种情况(TCP重传也发生,但不会因为几十次重传而停滞)。 我的testing设置是一个简单的HTML4 FORM(方法POST),具有单个文件input字段。 NodeJS服务器只读取传入的数据,不做其他事情。 我已经在多台机器,networking,浏览器上testing过这个问题。 这是上传文件时客户端的TCPstream量转储: ….. TCP 1506 [TCP segment of a reassembled PDU] >> everything is uploading fine until: TCP 1506 [TCP Fast Retransmission] [TCP segment of a reassembled PDU] TCP 66 [TCP Dup ACK 7392#1] 63265 > http [ACK] Seq=4844161 Ack=1 Win=524280 Len=0 TSval=657047088 TSecr=79373730 […]

TIME_WAIT会影响dynamic端口吗?

我读了一些关于TIME_WAIT连接,并知道他们应该对我的服务器无害(连接closures,所以没有资源连接到此套接字)。 最近,我的服务器在TIME_WAIT状态达到了60k个端口的魔术数字; 我想知道我是否会用完免费的端口? 我的服务器使用内核中设置的dynamic本地端口: # sysctl net.ipv4.ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 当创build一个新的连接时,它会使用其中一个TIME_WAIT端口吗? 或尝试绑定一个不同的,开放的端口? 如果我把这个variables设置到端口1024-65535,如果我有一些应用程序在该范围内的端口上运行,会发生什么? 这不是一个如何最小化TIME_WAIT连接状态的问题。 当前的内核修改 : # sysctl net.ipv4.tcp_tw_recycle net.ipv4.tcp_tw_recycle = 0 # sysctl net.ipv4.tcp_tw_reuse net.ipv4.tcp_tw_reuse = 1 # sysctl net.ipv4.tcp_fin_timeout net.ipv4.tcp_fin_timeout = 30 # sysctl net.ipv4.tcp_timestamps net.ipv4.tcp_timestamps = 1 # sysctl net.ipv4.tcp_sack net.ipv4.tcp_sack = 1

DMZ防火墙后面的服务器不会回应

我有一个DMZ服务器设置为转发特定的端口到几台机器。 预期的行为是给我一个特定的端口发送一个请求到非军事区,让公众无法访问的机器公开地回应数据。 在这个例子中,我将端口10001转发到端口80上的非发布服务器。 我可以看到转发正在工作,因为我可以看到数据包通过服务器上的tcpdump进入。 无论出于何种原因,它所回应的数据包都没有返回到我的terminal(我正在curl)。 iptables-save命令: # Generated by iptables-save v1.4.10 on Fri Dec 23 17:36:10 2011 *nat :PREROUTING ACCEPT [5609:332934] :INPUT ACCEPT [5609:332934] :OUTPUT ACCEPT [5231:376507] :POSTROUTING ACCEPT [5248:377595] -A PREROUTING -i eth0 -p tcp -m tcp –dport 10001 -j DNAT –to-destination 192.168.1.11:80 COMMIT # Completed on Fri Dec 23 17:36:10 2011 # Generated […]

mysql错误:“无法通过套接字连接到本地mysql服务器

Taps Server Error: Mysql::Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 每当我尝试推送我的本地mysql到heroku postgres时,我得到这个错误。 看来,MySQLconfiguration错误,并且Windows不太可能有一个var / run目录。 我可以理解,我需要强制MySQL通过TCP连接,而不是通过套接字。 我查了教程,但它不能帮助我,任何人都可以帮助我呢? 我正在使用Windows 7。

客户端可以使最大只有15个连接到Ubuntu的定制服务器

我有一个C#中的自定义服务器在Ubuntu下运行在单声道。 我最多可以组成15个silverlight客户端连接到服务器。 当我做了16日,它只是等待。 如果我closures了其中一个已build立的连接,则第16个客户端可以连接。 我正在从一台机器进行连接。 我也不超过任何文件处理限制。 限制是1024,我有大约300。 任何想法如何build立更多的联系? 另外为什么数字15? 这是特定于linux的东西吗?

连接到SYN_SENT中的mysql服务器

从我们的应用服务器和数据库服务器(Mysql)之间的连续几天,我们面临着一个奇怪的问题:从应用程序服务器连接到数据库服务器挂起SYN_SENT状态,之后我们无法在mysql端口上连接数据库服务器3306)。 当我们检查数据库服务器上的netstat输出时,它处于SYN_RECV状态。 我可以看出,mysql服务器正在接收SYN请求,并且响应也没有到达客户端,因此服务器端的SYN_RECV和客户端的SYN_SENT 。 我认为SYN_SENT状态应该过了一段时间,因为这个其他数据库连接尝试到同一台服务器不应该挂起。 有谁知道我们如何解决这个问题? 输出设置细节: 应用程序服务器: RHEL 5.4,kernel-release = 2.6.18-164.el5,x86_64 数据库服务器: Mysql版本:5.1.49 RHEL 5.4,kernel-release = 2.6.18-164.el5,x86_64

Windows Server 2008在90-100K TCP连接之后停止接受更多

我正在尝试testingWindows Server 2008(64位,15 GB RAM)计算机的最大限制,以实现端口上的最大入站TCP / IP连接。 我正在使用C#与asynchronous套接字。 我面对的问题是,即使资源仍然是空闲的(CPU,内存),服务器在90-100K的TCP连接之后停止接受更多的连接。 停止后没有固定的限制,但是在90-100K的范围内,有时候甚至比这个还要多。 有没有人有这个问题的想法? 在Windows机器上有多less个最大TCP连接?

转移TCP连接

我正试图转移一个TCP连接。 给定连接到路由器R的客户端(C)和连接到路由器的两个服务器(S1和S2),C最初连接到S1。 我正在尝试在路由器上编写一个iptables规则来转移所有stream量到S2。 但问题是,S2继续发送RST消息,连接永远不会build立。 我在所有的盒子上运行wireshark,注意到这一点:C与S1build立TCP连接,当我的iptable规则启动时,它发送一个ACK给S2,它发回一个RST,然后循环这个时间。 有没有办法转移这样的TCP连接?

如何在Windows服务器上获得send-q和receive-q

在linux中,很容易排除远程连接问题,因为netstat显示send-q和recv-q。 这是非常有用的,因为我们可以知道远程节点是否正在读取服务器发送缓冲区。 但在Windows netstat不显示这些值,有没有什么办法让窗户? 我需要发送build立连接(如Linux)

iptables / haproxy每秒限制数据包

是否有可能限制iptables或haproxy每秒(或每秒字节)传入的TCP数据包? 我发现了很多例子,但是没有一个似乎起作用。