国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > CentOS > 正文

CentOS下TCP斷線監測詳解

2020-06-21 12:46:12
字體:
來源:轉載
供稿:網友

TCP正常的斷開,通信雙方(服務端和客戶端)都是能知道的。但是非正常的斷開,比如直接拔掉了網線,就只能靠如下兩種方法,實現短時間內的檢測。

,心跳包機制

心跳包機制,是網游設計中的常用機制。從用戶層面,自己發包去判斷對方連線狀態。可以根據情況,很靈活的使用。比如,20秒發送一個最小的數據包(也可以根據實際情況稍帶一些其他數據)。如果發送沒有回應,就判斷對方掉線了。

,利用tcp_keepalive機制

利用TCP的機制,通過設置系統參數,從系統層面,監測tcp的連接狀態。以下為linux下的方法:

1,首先查看系統tcp_keepalive相關參數(centos和Ubuntu)

# sysctl -a|grep tcp_keepalive

顯示如下:

CentOS,TCP,斷線監測

net.ipv4.tcp_keepalive_intvl = 75

net.ipv4.tcp_keepalive_probes = 9

net.ipv4.tcp_keepalive_time = 7200

分別說一下這三個參數:

tcp_keepalive_time 參數:

是指TCP發送keepalive消息的頻度,默認為7200秒,也就是兩個小時。

keepalive_intvl 參數:

當探測沒有確認時,重新發送探測的頻度。默認是75秒。

keepalive_probes 參數:

在認定連接失效之前,發送多少個TCP的keepalive探測包。默認值是9次。

--------------------------------------------------------------------

2,修改系統的tcp_keepalive相關參數

在知道以上三個系統參數的定義和作用之后,我們來修改一下這三個參數:

修改/etc/sysctl.conf文件:

# vi /etc/sysctl.conf

在打開的文件中,加入如下三行:

net.ipv4.tcp_keepalive_intvl = 1

net.ipv4.tcp_keepalive_probes = 1

net.ipv4.tcp_keepalive_time = 5

保存文件。

--------------------------------------------------------------------

3,重啟服務器。

# reboot

附注:或者臨時使系統設置生效也行:# sysctl -p

--------------------------------------------------------------------

4,修改程序代碼部分。

注意:僅僅配置內核參數是不夠的,還必須在編程的時候設置套接字的選項,調用函數是

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 對應

--------------------------------------------------------------------


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 浦东新区| 吴桥县| 忻城县| 萝北县| 万年县| 六安市| 关岭| 札达县| 渑池县| 将乐县| 灵寿县| 石门县| 韶关市| 隆子县| 碌曲县| 大安市| 靖安县| 华坪县| 盱眙县| 阆中市| 凤山县| 沁阳市| 江都市| 卢龙县| 永城市| 共和县| 巴林左旗| 综艺| 忻城县| 红桥区| 临邑县| 潞城市| 新野县| 缙云县| 万年县| 依兰县| 莒南县| 稷山县| 肇东市| 溧水县| 无为县|