目前odbc版本2.3.1,不支持设置连接属性(连接超时、命令请求超时等),需要odbc版本3.0以上。可通过设置tcp内核参数(重传次数)来缩短超时时间。
使用命令行可以方便地查看已安装的 ODBC的版本信息。
打开终端。
输入以下命令来查看MySQL ODBC的版本:
odbcinst --version
这将显示已安装的ODBC驱动程序的版本信息。
1.ipv4.tcp_retries2
通过隐藏通信应用程序中的临时网络中断,TCP 可以在偶尔不可靠的网络上提供可靠的通信。在通知发件人任何问题之前,您的操作系统将多次重发丢失的消息。大多数 Linux 发行版默认将任何丢失的数据包重传 15 次。重新传输以指数方式回退,因此这 15 次重新传输需要 900 秒钟以上的时间才能完成。这意味着使用这种方法,Linux 需要花费几分钟的时间来检测网络分区或故障节点。 Windows 默认仅重传 5 次,相应的超时时间约为 6 秒。
Linux 默认设置允许通过可能遭受很长数据包丢失的网络进行通信,但是对于大多数 Elasticsearch 集群而言,此默认设置对于单个数据中心内的生产网络而言过于昂贵。高可用性集群必须能够快速检测节点故障,以便它们可以通过重新分配丢失的碎片,重新路由搜索以及可能选择一个新的主节点来迅速做出反应。因此,Linux 用户应减少最大 TCP 重传次数。
通过以 root 身份运行以下命令,可以将最大 TCP 重传次数减少到 5 。五次重发对应于大约六秒钟的超时。
sysctl -w net.ipv4.tcp_retries2=5
重启后会回复默认值
永久设置此值,请更新 /etc/sysctl.conf 中的 net.ipv4.tcp_retries2 设置。
net.ipv4.tcp_retries2=5
加载内核参数
[dmdba@localhost ~]$ sysctl -p
2.ipv4.tcp_keepalive_time
定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP 保活机制会开始作用,每隔一个时间间隔,发送一个「探测报文」,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核将错误信息通知给上层应用程序。
在 Linux 内核可以有对应的参数可以设置保活时间、保活探测的次数、保活探测的时间间隔,以下都为默认值:
net.ipv4.tcp_keepalive_time=7200
net.ipv4.tcp_keepalive_intvl=75
net.ipv4.tcp_keepalive_probes=9
tcp_keepalive_time=7200:表示保活时间是 7200 秒(2小时),也就 2 小时内如果没有任何连接相关的活动,则会启动保活机制
tcp_keepalive_intvl=75:表示每次检测间隔 75 秒;
tcp_keepalive_probes=9:表示检测 9 次无响应,认为对方是不可达的,从而中断本次的连接
禁用IPv6:
如果您的系统不需要使用IPv6,可以尝试禁用它,以减少网络相关的问题。在终端中执行以下命令,将ipv6.disable参数设置为1:文章来源:https://www.toymoban.com/news/detail-745081.html
sysctl -w net.ipv6.conf.all.disable_ipv6=1
TCP 重传超时 |Elasticsearch 指南 [8.10] |弹性的文章来源地址https://www.toymoban.com/news/detail-745081.html
到了这里,关于linux内核tcp配置--断网后连接卡住的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!