目前odbc版本2.3.1,不支持設置連接屬性(連接超時、命令請求超時等),需要odbc版本3.0以上??赏ㄟ^設置tcp內核參數(重傳次數)來縮短超時時間。
使用命令行可以方便地查看已安裝的 ODBC的版本信息。
打開終端。
輸入以下命令來查看MySQL ODBC的版本:
odbcinst --version
這將顯示已安裝的ODBC驅動程序的版本信息。
1.ipv4.tcp_retries2
通過隱藏通信應用程序中的臨時網絡中斷,TCP 可以在偶爾不可靠的網絡上提供可靠的通信。在通知發(fā)件人任何問題之前,您的操作系統(tǒng)將多次重發(fā)丟失的消息。大多數 Linux 發(fā)行版默認將任何丟失的數據包重傳 15 次。重新傳輸以指數方式回退,因此這 15 次重新傳輸需要 900 秒鐘以上的時間才能完成。這意味著使用這種方法,Linux 需要花費幾分鐘的時間來檢測網絡分區(qū)或故障節(jié)點。 Windows 默認僅重傳 5 次,相應的超時時間約為 6 秒。
Linux 默認設置允許通過可能遭受很長數據包丟失的網絡進行通信,但是對于大多數 Elasticsearch 集群而言,此默認設置對于單個數據中心內的生產網絡而言過于昂貴。高可用性集群必須能夠快速檢測節(jié)點故障,以便它們可以通過重新分配丟失的碎片,重新路由搜索以及可能選擇一個新的主節(jié)點來迅速做出反應。因此,Linux 用戶應減少最大 TCP 重傳次數。
通過以 root 身份運行以下命令,可以將最大 TCP 重傳次數減少到 5 。五次重發(fā)對應于大約六秒鐘的超時。
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 ?;顧C制會開始作用,每隔一個時間間隔,發(fā)送一個「探測報文」,該探測報文包含的數據非常少,如果連續(xù)幾個探測報文都沒有得到響應,則認為當前的 TCP 連接已經死亡,系統(tǒng)內核將錯誤信息通知給上層應用程序。
在 Linux 內核可以有對應的參數可以設置?;顣r間、?;钐綔y的次數、?;钐綔y的時間間隔,以下都為默認值:
net.ipv4.tcp_keepalive_time=7200
net.ipv4.tcp_keepalive_intvl=75 ?
net.ipv4.tcp_keepalive_probes=9
tcp_keepalive_time=7200:表示?;顣r間是 7200 秒(2小時),也就 2 小時內如果沒有任何連接相關的活動,則會啟動?;顧C制
tcp_keepalive_intvl=75:表示每次檢測間隔 75 秒;
tcp_keepalive_probes=9:表示檢測 9 次無響應,認為對方是不可達的,從而中斷本次的連接
?
禁用IPv6:
如果您的系統(tǒng)不需要使用IPv6,可以嘗試禁用它,以減少網絡相關的問題。在終端中執(zhí)行以下命令,將ipv6.disable參數設置為1:文章來源:http://www.zghlxwxcb.cn/news/detail-745081.html
sysctl -w net.ipv6.conf.all.disable_ipv6=1
TCP 重傳超時 |Elasticsearch 指南 [8.10] |彈性的文章來源地址http://www.zghlxwxcb.cn/news/detail-745081.html
到了這里,關于linux內核tcp配置--斷網后連接卡住的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!