场景回放
- A机器的服务请求B机器的服务
- 短连接请求,动态创建连接端口
- A机器服务会主动关闭连接
- 短时间内高并发请求
- A机器的tcpssports被耗尽了
- 大部分网络连接处time_wait状态
内核配置
net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.ip_local_reserved_ports = 5710-5739,15710-15739
端口耗尽
- 主动调用close()/shutdown()断开连接,收到对方确认后状态变为TIME_WAIT。
- TCP协议TIME_WAIT状态会一直持续2MSL,TIME_WAIT有时间窗口,Linux默认是60秒
- TIME_WAIT状态的连接占用的资源不会被内核释放
- TIME_WAIT状态转换到CLOSE状态后资源才会真正被系统收回。
内核参数优化
客户端内核参数优化
#开启TCP连接中TIME-WAIT套接字的快速回收 net.ipv4.tcp_tw_recycle=1 #开启重用,表示是否允许将处于TIME-WAIT状态的socket(TIME-WAIT的端口)用于新的TCP连接 。 net.ipv4.tcp_tw_reuse=1 #对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间(秒)。 #对方可能会断开连接或一直不结束连接或不可预料的进程死亡。 net.ipv4.tcp_fin_timeout=5 #TCP时间戳(会在TCP包头增加12个字节),以一种比重发超时更精确的方法(参考RFC 1323) #来启用对RTT 的计算,为实现更好的性能应该启用这个选项。 net.ipv4.tcp_timestamps=1 #收缩TIME_WAIT状态socket的回收时间窗口 net.ipv4.tcp_tw_timeout=3
服务端内核参数优化
#定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。 sysctl net.core.somaxconn=1024 #传输缓区长度大小 ifconfig eth0 txqueuelen 5000 echo "/sbin/ifconfig eth0 txqueuelen 5000" >> /etc/rc.local #在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目 sysctl net.core.netdev_max_backlog=2000 #对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器出现过载,可以尝试增加这个数字。 sysctl net.ipv4.tcp_max_syn_backlog=2048
参考资料:
https://en.wikipedia.org/wiki/Transmission_Control_Protocol?spm=5176.100239.blogcont52884.5.JrKkjE
http://www.medianet.kent.edu/techreports/TR2005-07-22-tcp-EFSM.pdf
http://stackoverflow.com/questions/410616/increasing-the-maximum-number-of-tcp-ip-connections-in-linux/3923785#3923785
http://www.cnblogs.com/fczjuever/archive/2013/04/05/3000680.html
http://www.cnblogs.com/fczjuever/archive/2013/04/17/3026694.html
相关推荐
Windows Server 2008 R2系统BUG导致windows缓冲区已满(no buffer space),Windows核心套接字泄露问题导致操作系统套接字资源被耗尽,导致服务器与数据库无法正常对接。
并发场景下 client 频繁请求端口建立tcp连接导致端口被耗尽 解决方案 root执行即可 sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用 sysctl -w ...
重要提示:近期我公司网络监测发现,扫描VPS的默认登陆端口3389攻击比较多,会导致VPS主机CPU及带宽耗尽,为保证用户VPS的安全建议及时更改3389端口。 1、首先登录VPS 下载3389远程端口修改工具(大部分系统桌面已有...
Windows Server 2008 R2系统BUG导致windows缓冲区已满(no buffer space),Windows核心套接字泄露问题导致操作系统套接字资源被耗尽,导致服务器与数据库无法正常对接。windows 2008 R2解决socket连接不释放补丁包_time...
(8)、超时机制:可设置空连接(连接不发送数据)超时时间以防止DOS攻击,也可设置心跳超时时间防止网络故障导致的现有连接成为虚连接避免耗尽系统资源。 (9)、接口技术:API、回调函数、客户句柄(客户连接句柄)。...
SYN Flood是当前最流行的拒绝服务攻击之一,这是一种利用TCP协议缺陷,发送大量的伪造的TCP连接请求,从而使得被攻击方资源耗尽(CPU满负荷或内存不足)的攻击方式。 TCP协议是基于连接的,也就是说,为了在服务端...
摘要:Java源码,网络相关,冰盾... 自动阻断某一IP对服务器特定端口的大量TCP全连接资源耗尽攻击,包括抵御多种CC变种攻击。 防止脚本攻击 专业防范ASP、PHP、PERL、JSP等脚本程序的洪水式Flood调用导致数据库和
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址 分组的转发 属于同一条虚电路的分组均按照同一路由进行转发 每个分组独立选择路由进行转发 当结点出故障时 所有通过出故障的...
自动阻断某一IP对服务器特定端口的大量TCP全连接资源耗尽攻击。 ● 防止脚本攻击 专业防范ASP、PHP、PERL、JSP等脚本程序的洪水式Flood调用导致数据库和WEB崩溃的拒绝服务攻击。 ● 对付DDOS工具 XDOS、HGOD、...
1) 每一个新的连接导致一个最早的(或随机的)连接被删除。 2) 初始的重传超时时间被减少一半,直到 0 . 5秒。 3) 如果处于监视模式,则超时时间减半,直到 1 5秒。 有两个因素用来判断路由器是否正在遭受攻击。...
由于攻击者发送了许多这样的SYN数据包, 服务器的资源被耗尽, 导致合法的连接请求被放弃. 这是一种拒绝服务攻击(Denial-of-service, DoS)的形式. 在大多数情况下, 攻击者从伪造的IP地址生成SYN数据包. 伪造的IP地址是...
这段时间花了点时间整理了几个新手易犯的典型缺陷(专门针对C#的),...保持这些资源的使用状态会急剧的耗尽系统的资源,削弱性能并且最终导致程序出错。当你打开一个 文件、网络端口或者数据连接时,当你不再使用这些
近日在CDB并行测试中发现一个问题:我们需要的小区负荷话统结果总是为零,开始还以为小区负荷太小,于是加大短消息下发数量,但还为零,于是在程序中加入测试代码,把收到的数据在BAM上打印出来, 结果打印出来的...
攻击者只要操纵这些伪造IP,源源不断发送SYN请求,网站服务器就会为此迅速耗尽全部系统资源,导致正常连接请求业务被服务器拒绝。 发起DDOS的攻击者往往手握大量"肉鸡",即被植入"灰鸽子"木马的在线电脑终端。这网络...
DarkShell((DDOS)集群防火墙压力测试系统)是一款由DarkShell工作室独立开发的标准的网络压力测试软件、集DDOS、WEB、ISS连接测试于一身的集群压力测试软件,可广泛应用于机房、路由、软、硬件防火墙测试,机房带宽...
拒绝服务(Denial of Service,DOS)就是故意的攻击网络协议缺陷或直接通过野蛮手段耗尽被攻击对象的资源,使受害主机或网络不能及时接收处理外界请求,或无法及时回应外界请求的能力,甚至导致系统崩溃、网络瘫痪。...
如果要在没有调度程序的情况下仍能连接到数据库, 请将该值设置为与例程名相同。此参数自 8.1.3 版起已废弃。 值范围: 根据操作系统而定。 默认值 :0 mts_sessions: 说明 : 指定允许的共享服务器体系结构用户会话的...