1.参数设置

查看相关的参数

sysctl -a|grep tcp_keepalive
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 2
net.ipv4.tcp_keepalive_time = 160

设置相关的参数

sysctl -w net.ipv4.tcp_keepalive_time = 7500

也可以直接打开

# vim/etc/sysctl.conf

加入net.ipv4.tcp_keepalive_time = 7500,然后保存退出

让参数生效

# sysctl -p

2.参数相关的说明

/proc/sys/net/ipv4/tcp_keepalive_time
当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时。
/proc/sys/net/ipv4/tcp_keepalive_intvl
当探测没有确认时,重新发送探测的频度。缺省是75秒。
/proc/sys/net/ipv4/tcp_keepalive_probes
在认定连接失效之前,发送多少个TCP的keepalive探测包。缺省值是9。这个值乘以tcp_keepalive_intvl之后决定了,一个连接发送了keepalive之后可以有多少时间没有回应

tcp_keepalive_time :INTEGER
默认值是7200(2小时)
当keepalive打开的情况下,TCP发送keepalive消息的频率。(由于目前网络攻击等因素,造成了利用这个进行的攻击很频繁,曾经也有cu的朋友提到过,说如果2边建立了连接,然后不发送任何数据或者rst/fin消息,那么持续的时间是不是就是2小时,空连接攻击?tcp_keepalive_time就是预防此情形的.我个人在做nat服务的时候的修改值为1800秒)

tcp_keepalive_probes:INTEGER
默认值是9
TCP发送keepalive探测以确定该连接已经断开的次数。(注意:保持连接仅在SO_KEEPALIVE套接字选项被打开是才发送.次数默认不需要修改,当然根据情形也可以适当地缩短此值.设置为5比较合适)

tcp_keepalive_intvl:INTEGER
默认值为75
探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。(对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值,15是个比较合适的值)
$ /proc/sys/net/ipv4/tcp_keepalive_time
$ /proc/sys/net/ipv4/tcp_keepalive_intvl
$ /proc/sys/net/ipv4/tcp_keepalive_probes
这3个参数与TCP KeepAlive有关.默认值是:
tcp_keepalive_time = 7200 seconds (2 hours)
tcp_keepalive_probes = 9
tcp_keepalive_intvl = 75 seconds
意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大. 可调整到:
/proc/sys/net/ipv4/tcp_keepalive_time 1800
/proc/sys/net/ipv4/tcp_keepalive_intvl 30
/proc/sys/net/ipv4/tcp_keepalive_probes 3

tcp_keepalive_intvl:探测消息发送的频率
tcp_keepalive_probes:TCP发送keepalive探测以确定该连接已经断开的次数
tcp_keepalive_time:当keepalive打开的情况下,TCP发送keepalive消息的频率

默认:

# cat /proc/sys/net/ipv4/tcp_keepalive_time  7200  
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl  75  
# cat /proc/sys/net/ipv4/tcp_keepalive_probes  9

修改:
# echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time  
# echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl  
# echo 20 > /proc/sys/net/ipv4/tcp_keepalive_probes

有关内核级别的keepalive和time_wait的优化调整

vi /etc/sysctl

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_fin_timeout = 30
net.core.netdev_max_backlog =8096

修改完记的使用sysctl -p 让它生效

以上参数的注解
/proc/sys/net/ipv4/tcp_tw_reuse
该文件表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接.

/proc/sys/net/ipv4/tcp_tw_recycle
recyse是加速TIME-WAIT sockets回收

对tcp_tw_reuse和tcp_tw_recycle的修改,可能会出现.warning, got duplicate tcp line warning, got BOGUS tcp line.上面这二个参数指的是存在这两个完全一样的TCP连接,这会发生在一个连接被迅速的断开并且重新连接的情况,而且使用的端口和地址相同.但基本 上这样的事情不会发生,无论如何,使能上述设置会增加重现机会.这个提示不会有人和危害,而且也不会降低系统性能,目前正在进行工作

/proc/sys/net/ipv4/tcp_keepalive_time
表示当keepalive起用的时候,TCP发送keepalive消息的频度.缺省是2小时

/proc/sys/net/ipv4/tcp_fin_timeout   最佳值和BSD一样为30
fin_wait1状态是在发起端主动要求关闭tcp连接,并且主动发送fin以后,等待接收端回复ack时候的状态.对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间.对方可能会断开连接或一直不结束连接或不可预料的进程死亡.

/proc/sys/net/core/netdev_max_backlog
该文件指定了,在接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目.

tcp状态

LISTEN:侦听来自远方的TCP端口 的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接 请求的确认
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN- WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对 连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT:等待足够的时间以确保远程TCP接 收到连接中断请求的确认
CLOSED:没有任何连接状态

参考:

Linux内核参数——优化网络速度

linux 内核参数优化

tcp_keepalive的设置

优化Linux下的内核TCP参数来提高服务器负载能力

Linux中keepalive的使用

linux下使用TCP存活(keepalive)定时器

Apache 的 KeepAlive 和 TCP/IP 的 TIME_WAIT

修改Linux内核参数提高服务器并发能力相关推荐

  1. linux内核并发教程,修改Linux内核参数提高Nginx服务器并发性能

    当linux下Nginx达到并发数很高,TCP TIME_WAIT套接字数量经常达到两.三万,这样服务器很容易被拖死.事实上,我们可以简单的通过修改Linux内核参数,可以减少Nginx服务器 的TI ...

  2. 教你 7 招,迅速提高服务器并发能力!

    什么是服务器并发处理能力? 一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强. 服务器的本质工作就是,争取以最快的速度将内核缓冲区中的用户请求数据一个不剩地都拿出 ...

  3. 不同用户同时并发测压_教你 7 招,迅速提高服务器并发能力!

    作者:潇洒一剑 链接:www.cnblogs.com/zengjin93 什么是服务器并发处理能力? 一台服务器在单位时间里能处理的请求越多,服务器的能力越高,也就是服务器并发处理能力越强. 服务器的 ...

  4. 为支持nginx高并发而修改的一些Linux内核参数

    前言 由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器定义,所以需要修改Linux内核参数,使的nginx拥有更高的性能. 在优化内核时, 可以做的事情很 ...

  5. 转载:Linux内核参数的优化(1.3.4)《深入理解Nginx》(陶辉)

    原文:https://book.2cto.com/201304/19615.html 由于默认的Linux内核参数考虑的是最通用的场景,这明显不符合用于支持高并发访问的Web服务器的定义,所以需要修改 ...

  6. linux内核参数优化 for 高并发服务器

    2019独角兽企业重金招聘Python工程师标准>>> linux内核参数优化net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_fil ...

  7. 优化Linux内核参数/etc/sysctl.conf sysctl 《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》...

    优化Linux内核参数/etc/sysctl.conf  sysctl  <高性能Linux服务器构建实战:运维监控.性能调优与集群应用> http://book.51cto.com/ar ...

  8. Nginx做web服务器linux内核参数优化

    关于Linux内核参数的优化:net.ipv4.tcp_max_tw_buckets = 6000timewait的数量,默认是180000.net.ipv4.ip_local_port_range ...

  9. linux内核参数注释与优化

    目录 1.linux内核参数注释 2.两种修改内核参数方法 3.内核优化参数生产配置 参数解释由网络上收集整理,常用优化参数对比了网上多个实际应用进行表格化整理,使查看更直观. 学习linux也有不少 ...

最新文章

  1. QIIME 2用户文档. 1简介和安装(2018.11)
  2. Android 用Animation-list实现逐帧动画
  3. vuejs,angularjs,reactjs介绍
  4. (最新合集)计算机网络谢希仁第七版 第四章课后答案
  5. java 反射执行语句_JAVA反射机制
  6. Silverlight 视频学习札记(一)
  7. 若依框架在未登录的情况下访问swagger页面
  8. Office之Word
  9. 使用线程池管理线程!
  10. linux文件系统目录操作实验报告,Linux操作系统实验报告
  11. 【DBAI】《基于机器学习的数据库技术综述》
  12. 企业移动应用—我有 开启移动营销的里程碑
  13. AMD CPU 超频
  14. 总有人问我:独立站该怎么玩?3个案例,你看完就懂了
  15. 【Mermaid 语法详细教程 01】 流程图(Flowchart / graph)
  16. 漏洞解决方案-跨站请求伪造漏洞
  17. [TPAMI-2023] Effective Local and Global Search for Fast Long-Term Tracking
  18. Maschine 2 v2.14.3 + Factory Library WiN-MAC 节奏音乐制作软件含原厂拓展
  19. android图片音乐播放器,android 音乐播放器----获取专辑封面图片
  20. ubuntu系统安装软件报错dpkg-divert: error: rename involves overwriting ‘/usr/share/...

热门文章

  1. Git统计个人提交代码行数
  2. 使用OpenCV和Imutils构建图像的蒙太奇效果
  3. C指针8:二级指针(意思就是指向指针的指针)
  4. Python Qt GUI设计:QPushButton、QRadioButton和QCheckBox按钮类(基础篇—12)
  5. 力扣(LeetCode)刷题,简单题(第21期)
  6. Linux那些事儿 之 戏说USB(7)不一样的core
  7. 机器学习(15)精确率召回率F1-score(查看癌症预测结果的精确率、召回率)
  8. 吴恩达神经网络和深度学习——第四周笔记
  9. pptxgenjs一个月深度使用感受(未完待续……)
  10. Blender和Substance Painter复古相机创作学习教程