博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UNIX网络编程——处理服务器中大量的TIME_WAIT
阅读量:6681 次
发布时间:2019-06-25

本文共 891 字,大约阅读时间需要 2 分钟。

     出现条件:

  • 服务器主动关闭 
  • 短连接服务加剧 

     根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),TIME_WAIT状态下的socket不能被回收使用。

     具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务。TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证。

发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决:
vi /etc/sysctl.conf
编辑文件,加入以下内容
net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 30
然后执行下面命令让参数生效:
/sbin/sysctl -p
 
net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
net.ipv4.tcp_tw_reuse = 1 
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
net.ipv4.tcp_fin_timeout 
修改系統默认的 TIMEOUT 时间

转载于:https://www.cnblogs.com/hehehaha/p/6332596.html

你可能感兴趣的文章
PHP日历代码:一个循环还是两个循环
查看>>
storm 读取kafka数据 单机测试
查看>>
使用rebar3创建erlang项目通过cowboy与页面交互
查看>>
HOW TO INSTALL XEN HYPERVISOR ON DEBIAN 9 “STRETCH” AND DEBIAN 8 “JESSIE” LINUX SYSTEMS
查看>>
tomcat问题
查看>>
基础算法----判断字符串是否为另一个字符串的真子集
查看>>
公用外部函数接口——CFFI
查看>>
ios原生扫描二维码功能,中文不乱码,支持ios7及以上
查看>>
iOS 画圆形
查看>>
Intellij IDEA12 中文帮助(译) <一>
查看>>
wifi共享精灵无法启动
查看>>
mysql查询语句
查看>>
CentOs 配置网易163yum 步骤
查看>>
mysql myisam与innodba的区别
查看>>
android 5.0 顶部bar问题
查看>>
Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
查看>>
思维导图软件MindManager实用功能TOP 10 (一)
查看>>
JavaScript中this详解
查看>>
CentOS 6 基本配置
查看>>
oneinstack/LNMP 增加ngx_pagespeed webp 及 postgresql支持
查看>>