linux 超时 tcp,Linux中TCP设置syn超时时间
无论您使用什么语言或客户端库,您都应该能够在网络套接字操作上设置超时,通常将其拆分为连接超时、读取超时和写入超时。
但是,尽管您应该能够使这些超时尽可能小,但连接超时尤其具有任何给定内核的有效最大值。在此点之外,您可能请求的较高超时值将不起作用 - 连接在较短的时间后仍将超时。
TCP 连接的特殊原因是,建立 TCP 连接具有以 SYN 数据包为起点的特殊数据包序列。如果没有收到对此初始 SYN 数据包的响应,内核需要重试,它可能需要尝试几次。我知道,所有内核在发送 SYN 重重之间等待的时间越来越多,以避免淹没慢速主机。
所有内核都对重试 SYN 的数量设置上限。在 BSD 派生内核(包括 Mac OS X)上,标准模式是第二个 SYN 将在第一个内核之后 6 秒,然后是第三个 SYN 18 秒后,然后连接时间在总共大约 75 秒后关闭。
但是,在 Linux 上,默认重试周期在 20 秒后结束。Linux 发送 SYN 的重报确实比 BSD 派生的内核快一些 - Linux 据说在这 20 秒内发送 5 个 SYN,但这包括原始数据包(重报在 3s、6s、12s、24s 之后)。
但最终的结果是,如果你的应用程序想要一个小于 20s 的连接超时,没有问题,但如果你的应用程序想要一个超过 20s 的连接超时,你会发现默认内核配置将有效地将其排回 20s。
更改此超时上限非常简单,尽管它要求您更改系统配置参数,因此您需要对框进行根访问权限(或让系统管理员同意为您更改该参数)。
相关的 sysctl 是 ,对于 IP v4 是 。tcp_syn_retriesnet.ipv4.tcp_syn_retries
在选择您更改的值时要保守。与 BSD 一样,SYN 重试延迟会及时增加(尽管增加一倍而不是三倍),因此重试数量的相对较少增加会导致最大连接超时的显著增加。在一个完美的世界中,有一个很高的超时没有问题,因为应用程序的连接超时将发挥作用。
但是,许多应用程序没有设置显式连接超时,因此,如果将内核设置为 10 分钟,当远程主机关闭时,您迟早会发现一些挂起了很久的东西!
我建议你把它设置为一个值 6, 7, 或最多 8。6 的有效连接超时上限约为 45 秒,7 提供约 90 秒,8 提供约 190 秒。
若要在正在运行的内核中更改此项,可以使用 /proc 接口:
# cat /proc/sys/net/ipv4/tcp_syn_retries
5
# echo 6 > /proc/sys/net/ipv4/tcp_syn_retries
或者使用 sysctl 命令:
# sysctl net.ipv4.tcp_syn_retries
net.ipv4.tcp_syn_retries = 5
# sysctl -w net.ipv4.tcp_syn_retries=6
net.ipv4.tcp_syn_retries = 6
若要使此值在重新启动期间粘接,但您需要将其添加到 :/etc/sysctl.conf
net.ipv4.tcp_syn_retries = 6
大多数 Linux 安装都支持从 中的文件读取系统,这通常是更好的做法,因为它更容易管理升级,所以我建议你把它放在一个文件中。/etc/sysctl.d
linux 超时 tcp,Linux中TCP设置syn超时时间相关推荐
- linux socket默认超时时间设置,Socket中如何设置连接超时 (转)
Socket中如何设置连接超时 (转) Socket中如何设置连接超时 AntGhazi/2001.12.14 主页:antghazi.yeah 把CSDN与中文翻了底朝天,也没找到如何设置socke ...
- Socket中如何设置连接超时
Socket中如何设置连接超时 (antghazi发表于2003-3-16 9:28:38) 设置connect的超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案. ...
- oracle池式连接超时,oracle连接由于防火墙设置导致超时的问题
当应用程序使用数据库连接池进行数据连接时,防火墙的设置有可能会导致连接出现超时或者被重置的问题.当从数据库读数据的时候 有可能会 Connection timed out, 这是由于应用会缓存数据连接 ...
- java web超时提醒_如何在Java Web应用程序中动态设置会话超时?
我需要给我的用户一个Web界面来更改会话超时间隔. 因此,Web应用程序的不同安装对其会话可以具有不同的超时,但是它们的web.xml不能相同. 您的问题很简单,您需要在运行时配置会话超时间隔,并且应 ...
- java获取服务器超时_java – Eclipse中的Tomcat服务器超时
我在Eclipse中遇到Tomcat服务器问题.我收到以下超时错误: Server Tomcat v7.0 Server at localhost was unable to start within ...
- URLConnection 网络超时不返回,未设置自动超时
最近在使用URLConnection conn = realUrl.openConnection(); 时 没有设置 conn.setConnectTimeout(30000); conn.setR ...
- php中redis设置队列过期时间,如何在php中使用redis队列操作
如何在php中使用redis队列操作 发布时间:2021-02-04 18:36:00 来源:亿速云 阅读:90 作者:Leah 这篇文章给大家介绍如何在php中使用redis队列操作,内容非常详细, ...
- golang mysql 超时_golang中mysql建立连接超时时间timeout 测试
本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...
- golang中mysql建立连接超时时间timeout 测试
本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...
最新文章
- java实体类怎么写_Java中(entity)实体类的书写规范
- Eclipse6里面SSH整合说明
- 机器值计算机组成,计算机组成原理_数据的机器运算.ppt
- smtp中mailfrom是必须的吗_你是住在高层建筑中吗?这是你必须了解的
- Python 调试工具 PDB(Linux 环境下调试)
- python3字符串常用操作
- Linux 动态库剖析
- oracle 数据操作指令,ORACLE数据操作命令
- 广西民族博物馆真好玩
- VC 图像处理相关源代码,共28套打包下载.rar 分享
- springboot学习路径 转载子方志朋
- 西藏拉姆拉错:蓝蓝的湖水
- Windows7电脑自动断网的解决方法
- 计算机图形图像设计构图的基本形式,设计构图的八大基本表现手法!你造吗?...
- 如果讲不明白Spring Cloud核心组件,那我就白编故事了
- LWN:5.18合并窗口第一部分!
- Centos下增加swap空间
- 【车载以太网】【测试】架构及测试工具
- OpenCV 书稿:前言
- ionic capacitor 开发APP问题集合
热门文章
- SAP UI5 this.getList().getBinding(items).attachChange(this.handleMasterListChanged
- xml view里control id的生成逻辑
- CRM Web Client UI异步搜索介绍
- root cause of message type unknown during BP delta upload
- find out the service list changed with given user which have item category group
- 自己写的一段预测双色球号码的Java代码
- SAP UI5对于颜色使用的最佳实践
- 如何使用事务码SMICM分析ABAP代码发起的HTTP请求的错误
- Kubernetes里的ConfigMap的用途
- Netweaver和SAP云平台的quota管理