监测CentOS下TCP断线
TCP正常的断开,通信双方(服务端和客户端)都是能知道的。但是非正常的断开,比如直接拔掉了网线,就只能靠如下两种方法,实现短时间内的检测。 一、心跳包机制
心跳包机制,是网游设计中的常用机制。从用户层面,自己发包去判断对方连线状态。可以根据情况,很灵活的使用。比如,20秒发送一个最小的数据包(也可以根据实际情况稍带一些其他数据)。如果发送没有回应,就判断对方掉线了。 二、利用tcp_keepalive机制
利用TCP的机制,通过设置系统参数,从系统层面,监测tcp的连接状态。以下为linux下的方法:
、首先查看系统tcp_keepalive相关参数(centos和Ubuntu)
# sysctl -a|grep tcp_keepalive
显示如下:
net.ipv4.tcp_keepalive_intvl =
net.ipv4.tcp_keepalive_probes =
net.ipv4.tcp_keepalive_time =
分别说一下这三个参数:
tcp_keepalive_time 参数:
是指TCP发送keepalive消息的频度,默认为7200秒,也就是两个小时。
keepalive_intvl 参数:
当探测没有确认时,重新发送探测的频度。默认是75秒。
keepalive_probes 参数:
在认定连接失效之前,发送多少个TCP的keepalive探测包。默认值是9次。 、修改系统的tcp_keepalive相关参数
在知道以上三个系统参数的定义和作用之后,我们来修改一下这三个参数:
修改/etc/sysctl.conf文件:
# vi /etc/sysctl.conf
在打开的文件中,加入如下三行:
net.ipv4.tcp_keepalive_intvl =
net.ipv4.tcp_keepalive_probes =
net.ipv4.tcp_keepalive_time =
保存文件。 、重启服务器
# reboot
附注:或者临时使系统设置生效也行:# sysctl -p 、修改程序代码部分。
注意:仅仅配置内核参数是不够的,还必须在编程的时候设置套接字的选项,调用函数是
socket.setsockopt(level, optname, value)
示例:
level为SOL_SOCKET的话,选项为SO_KEEPALIVE,值为布尔。
socket.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, True)
此外还可以设置TCP选项(设置的level为SOL_TCP而不是SOL_SOCKET)覆盖系统全局设置
TCP_KEEPCNT 与tcp_keepalive_probes 对应
TCP_KEEPIDLE 与tcp_keepalive_time 对应
TCP_KEEPINTVL 与tcp_keepalive_intvl 对应
监测CentOS下TCP断线的更多相关文章
- [转]CentOS下性能监测工具 dstat
原文链接:http://www.bkjia.com/Linuxjc/935113.html 参考链接:https://linux.cn/article-3215-1.html,http://lhfli ...
- CentOS下性能监测工具 dstat
原文链接:http://www.bkjia.com/Linuxjc/935113.html 参考链接:https://linux.cn/article-3215-1.html,http://lhfli ...
- CentOS下开启mysql远程连接,远程管理数据库
当服务器没有运行php.没装phpmyadmin的时候,远程管理mysql就显得有必要了.因为在CentOS下设置的,所以标题加上了CentOS,以下的命令在debian等系统下应该也OK. mysq ...
- Redis 对比 Memcached 并在 CentOS 下进行安装配置
了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完 ...
- CentOS下SNMP的安装与使用
CentOS下SNMP的安装与使用 导读 简单网络管理协议(SNMP),由一组网络管理的标准组成,包含一个应用层协议(application layer protocol).数据库模型(datab ...
- Linux centOS下搭建RTMP服务器的具体步骤
以下的所需的安装包,可直接在linux系统终端下载,也可从其他地方下载之后拷到对应目录下解压使用,遇到连接不到国外网站时可改变压缩包地址 1.安装依赖包: #yum install glibc.i68 ...
- Centos下使用Heartbeat实现集群[转]
Linux 包括 CentOS 下高可用性(HA:High Availability)集群方案很多,而 Heartbeat 是比较常见和性价比比较高的一种。一、硬件及网络连接 群集一般需要2台以上服务 ...
- Centos下LAMP环境搭建
CentOs下环境搭建.2015.04.15.0001 Author:周凯 Time: 2015.04.15 版本号:2015.04.15.0001 安装过程 安装apache yum install ...
- linux/centos下安装nginx(rpm安装和源码安装)详细步骤
Centos下安装nginx rpm包 ...
随机推荐
- LM358资料及引脚图
LM358里面包括有两个高增益.独立的.内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器.直流增益模块和其他所有可用单电源供电的使用运放的地方使 ...
- 网络编程_Python-网络模型.
http://xmdevops.blog.51cto.com/11144840/1861280
- UVA LIVE-3263 - That Nice Euler Circuit
画一个顶点为偶数的封闭的二维图,当然.这个图能够自交,给出画的过程中的一些轨迹点.求出这个图把二次元分成了几部分,比如三角形把二次元分成了两部分. 这个的话,有图中顶点数+部分数-棱数=2的定律,这是 ...
- [MySql]windows下设置mysql默认编码
摘要 在安装好mysql的时候,如果新建数据库或者表默认的编码为latin1,如果这时候插入中文时,出出现类似下面的乱码的问题. SQLException: Incorrect string valu ...
- andriod 调用高德地图
Android Studio 配置工程 最后更新时间: 2017年08月29日 来自:http://lbs.amap.com/api/android-sdk/guide/cre ...
- UML:概要设计,用什么画我的类图?
背景 做过需求之后,很少使用 UML 画概要设计,这几天尝试的用了几个工具,最总还是选择了 VisualStudio. Edraw 详细信息很难编辑,如:签名. Viso 添加成员太麻烦了. Visu ...
- Python Post img
from poster.encode import multipart_encode from poster.streaminghttp import register_openers import ...
- Hadoop目录
1. 通过java读取HDFS的数据 (转) 2. FLume监控文件夹,将数据发送给Kafka以及HDFS的配置文件详解 3. 开启hadoop和Hbase集群的lzo压缩功能(转) 4. Hado ...
- 把Scala代码当作脚本运行
1. 在类UNIX系统上作为脚本运行 在类Unix系统上,你可以设置一个shell前导词来执行脚本.如下例: Script.scala #!/usr/bin/env scala !# println( ...
- Unity的延迟管线
unity buildin deferred pipeline rt0 albedo rt1 spec rt2 normal rt3 emissive rt4 shadowmask rt3的使用方式 ...