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

也可以直接打开/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.如果probe 9次(每次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消息的频率

linux代码

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/tcp.h>int keepAlive = 1;          // 开启keepalive属性
int keepIdle = 1800;        // 如该连接在1800秒内没有任何数据往来,则进行探测
int keepInterval = 3;       // 探测时发包的时间间隔为3秒
int keepCount = 2;          // 探测尝试的次数.如果第1次探测包就收到响应了,则后几次的不再发.
setsockopt(client_fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&keepAlive, sizeof(keepAlive));
setsockopt(client_fd, SOL_TCP, TCP_KEEPIDLE, (void *)&keepIdle, sizeof(keepIdle));
setsockopt(client_fd, SOL_TCP,TCP_KEEPINTVL, (void *)&keepInterval, sizeof(keepInterval));
setsockopt(client_fd, SOL_TCP, TCP_KEEPCNT, (void *)&keepCount, sizeof(keepCount));


tcp_keepalive的设置相关推荐

  1. linux ipv4 keepalive,tcp_keepalive的设置

    1.参数设置 查看相关的参数 sysctl -a|grep tcp_keepalive net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive ...

  2. 修改Linux内核参数提高服务器并发能力

    1.参数设置 查看相关的参数 sysctl -a|grep tcp_keepalive net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive ...

  3. ESP32入门基础之UDP和TCP实验

    文章目录 1 用户数据协议报UDP简介 1.1 UDP作为client进行数据收发实验 1.1.1 向app-wifi-udp-client工程添加udp client相关文件 1.1.2 网络调试助 ...

  4. TCP/IP传输层协议实现 - TCP连接的建立与终止(lwip)

    1.lwip tcp相关数据结构 1.1.tcp报文格式 <TCP-IP详解卷 1:协议>TCP包首部结构如下: 1.2.lwip tcp数据结构 tcp相关数据结构如下,tcp_pcb_ ...

  5. 第十六节 使用Socket 接口编程

    什么是Socket Socket 英文原意是"孔"或者"插座"的意思,在网络编程中,通常将其称之为"套接字",当前网络中的主流程序设计都是使 ...

  6. lwIP TCP/IP 协议栈笔记之十八: Socket接口编程

    目录 1. Socket 概述 2. LwIP 中的socket 3. Socket API 3.1 socket() 3.2 bind() 3.3 connect() 3.4 listen() 3. ...

  7. oracle dcd设置,叶摇 » Blog Archive » os.tcp_keepalive 和ORACLE DCD

    os.tcp_keepalive 和ORACLE DCD 1.ORACLE DCD(死连接检测,即Dead Connection Detection) 即在$ORACLE_HOME/network/a ...

  8. CLOSE_WAIT 和TCP_KEEPALIVE

    之前面试 曾经被问到 CLOSE_WAIT 状态意味这什么(服务端收到FIN 包后 还没有close fd,存在fd 泄漏的风险) 问题现象: 代理报错 too many open files, ul ...

  9. redis集群搭建及设置账户(转)

    Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...

最新文章

  1. 207. Course Schedule 210. Course Schedule II
  2. python3.6 - threading 多线程编程进阶,线程间并发控制(2)
  3. 【数字信号处理】相关函数应用 ( 正弦信号 的 自相关函数 分析 | 在白噪声中检测正弦信号 )
  4. Unity基础知识学习笔记二
  5. 【WebSocket初探 】
  6. Command对象应用--增加问卷调查
  7. oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...
  8. 【转载】法线贴图Nomal mapping 原理
  9. putty终端linux怎么粘贴复制,PuTTY下的保持SSH连接及复制粘贴功能
  10. 2018蓝桥杯模拟赛(一)--青出于蓝而胜于蓝(线段树)
  11. jquery 校验中国身份证号码
  12. Unity3D---通过Shader实现美颜
  13. 增加平均订单价值 – 交叉销售VS.升级销售
  14. 肾虚的信号你明白嘛?
  15. X站全称是什么_工作中学习 | 没有校惯导之前为什么PFD不显示飞机姿态,而IFSD却能显示...
  16. python中if not x_python使用 'if x is not None' 还是'if not x is None' – IT热血青年
  17. 做软件测试工程师真的很容易吗
  18. 电磁波:频率、波长、反射波
  19. 转贴-- CISCO CPOS STM配置示例
  20. TestDirector8.0 下载 安装

热门文章

  1. 01网络协议:从TCP协议到RPC协议都经历了哪些?
  2. #Java# 关于“+”加号的详解
  3. python网络爬虫的第三方库_Python常用第三方库_网络爬虫、数据分析与WEB开发、机器学习...
  4. C#object对向转成指定Model对象
  5. 1069 微博转发抽奖 (20 分)
  6. Hadoop之Yarn的配置(详细步骤)
  7. Xshell 7(SSH远程终端工具) v7.0.0109 官方中文正式版(附文件+安装教程)
  8. 机械外骨骼中的恒力悬浮背包研究
  9. Blender 是一款免费开源的 3D 创作套件
  10. sublime text 3 破解版下载