【網絡】Linux 內核優化實戰 - net.netfilter.nf_conntrack_tcp_timeout_established

目錄

      • 一、核心概念
        • 1. **TCP 連接狀態跟蹤**
        • 2. **參數作用**
      • 二、默認值與典型場景
        • 1. **默認值**
        • 2. **典型場景**
      • 三、如何調整該參數
        • 1. **查看當前值**
        • 2. **臨時修改(重啟后失效)**
        • 3. **永久修改**
      • 四、相關參數與配合優化
        • 1. **其他 TCP 狀態超時參數**
        • 2. **與應用層超時配合**
      • 五、常見問題與解決
        • 1. **長時間空閑連接中斷**
        • 2. **conntrack 表占用過多內存**
        • 3. **與 NAT 結合的問題**
      • 六、性能影響分析
        • 1. **縮短超時的優勢**
        • 2. **過長超時的風險**
      • 七、總結

net.netfilter.nf_conntrack_tcp_timeout_established 是 Linux 內核中控制 TCP 已建立連接在連接跟蹤系統(conntrack)中保持時間 的參數。該參數直接影響系統資源占用和防火墻/NAT 對長時間空閑連接的處理方式。

一、核心概念

1. TCP 連接狀態跟蹤
  • Linux 的 conntrack 系統會記錄 TCP 連接的整個生命周期(SYN_SENT → ESTABLISHED → FIN_WAIT → TIME_WAIT)。
  • ESTABLISHED 狀態表示連接已成功建立,數據正在傳輸。
2. 參數作用

net.netfilter.nf_conntrack_tcp_timeout_established 定義了 ESTABLISHED 狀態的 TCP 連接在 conntrack 表中保留的最大空閑時間。當連接連續空閑超過此時間:

  • conntrack 會刪除該連接記錄
  • 后續數據包可能被防火墻視為新連接,需重新驗證規則
  • 若使用 NAT,可能導致連接中斷

二、默認值與典型場景

1. 默認值
  • 大多數 Linux 發行版默認值為 43,200 秒(即 12 小時)。
2. 典型場景
場景建議值說明
普通 Web 應用1800-3600 秒Web 會話通常不會持續超過 1 小時,縮短超時可釋放資源
數據庫連接(如 MySQL)28,800 秒MySQL 默認超時為 8 小時,需與應用配置匹配
VPN 連接86,400 秒VPN 會話可能需要持續一整天,避免頻繁重連
高并發服務器300-900 秒通過快速回收資源應對大量短連接

三、如何調整該參數

1. 查看當前值
sysctl net.netfilter.nf_conntrack_tcp_timeout_established
2. 臨時修改(重啟后失效)
# 設置為 1 小時(3600 秒)
sudo sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=3600
3. 永久修改

編輯 /etc/sysctl.conf/etc/sysctl.d/ 目錄下的配置文件:

net.netfilter.nf_conntrack_tcp_timeout_established = 3600

保存后執行:

sudo sysctl -p

四、相關參數與配合優化

1. 其他 TCP 狀態超時參數
參數名作用默認值
net.netfilter.nf_conntrack_tcp_timeout_syn_sentSYN_SENT 狀態超時(未收到 SYN_ACK)120 秒
net.netfilter.nf_conntrack_tcp_timeout_syn_recvSYN_RECV 狀態超時(半開連接)60 秒
net.netfilter.nf_conntrack_tcp_timeout_time_waitTIME_WAIT 狀態超時120 秒
net.netfilter.nf_conntrack_tcp_timeout_close_waitCLOSE_WAIT 狀態超時60 秒
2. 與應用層超時配合

確保 conntrack 超時值 大于等于 應用層超時設置,避免意外中斷:

  • MySQLwait_timeout 參數默認 28,800 秒(8 小時)
  • HTTP 代理:如 Nginx 的 keepalive_timeout 默認 75 秒
  • SSHClientAliveIntervalClientAliveCountMax 控制連接保持

五、常見問題與解決

1. 長時間空閑連接中斷
  • 癥狀:SSH/數據庫/VPN 等長時間空閑后無法繼續通信
  • 可能原因
    • conntrack 超時小于應用層設置
    • 中間設備(如防火墻)提前關閉了連接
  • 解決
    # 增加 conntrack 超時時間
    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=86400# 或配置應用層保活機制(如 SSH 的 ClientAliveInterval)
    
2. conntrack 表占用過多內存
  • 癥狀:系統內存使用率高,conntrack 條目數增長快
  • 解決
    # 縮短已建立連接的超時時間
    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_established=1800  # 30 分鐘# 結合自動清理腳本
    conntrack -D -o time  # 刪除最舊的連接
    
3. 與 NAT 結合的問題
  • 癥狀:NAT 環境下,長時間空閑后連接無法恢復
  • 解決
    • 增加 conntrack 超時
    • 啟用應用層保活(如 TCP keepalive):
      sysctl -w net.ipv4.tcp_keepalive_time=1800  # 30 分鐘發送一次 keepalive
      sysctl -w net.ipv4.tcp_keepalive_probes=5    # 連續 5 次失敗才斷開
      

六、性能影響分析

1. 縮短超時的優勢
  • 減少 conntrack 表內存占用
  • 降低哈希表沖突概率,提升查找效率
  • 更快釋放系統資源
2. 過長超時的風險
  • 占用大量內存,可能導致 conntrack table full 錯誤
  • 空閑連接累積,影響防火墻性能
  • 僵尸連接無法及時清理

七、總結

  • 參數作用:控制已建立 TCP 連接在 conntrack 表中的最大空閑時間。
  • 調優原則
    • 根據應用特性設置合理超時(通常 30 分鐘到 8 小時)
    • 確保與應用層超時參數匹配
    • 高并發場景下優先縮短超時以釋放資源
  • 監控建議
    # 查看當前 ESTABLISHED 連接數量
    conntrack -L -s <源IP> | grep ESTABLISHED | wc -l# 監控 conntrack 內存使用
    watch -d "cat /proc/sys/net/netfilter/nf_conntrack_count"
    

合理配置 net.netfilter.nf_conntrack_tcp_timeout_established 是優化網絡性能和資源利用率的重要步驟。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/91004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91004.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

鴻蒙app 開發中的Record<string,string>的用法和含義

Record<string, string> 在鴻蒙 App 開發中的用法在 TypeScript 中&#xff0c;Record<string, string> 是一個映射類型&#xff08;Mapped Type&#xff09;&#xff0c;用于描述一個對象的結構。在鴻蒙 App 開發中&#xff0c;它常用于定義接口、組件屬性或函數參…

Webpack、Vite配置技巧與CI/CD流程搭建全解析

Webpack、Vite配置技巧與CI/CD流程搭建全解析 在現代前端開發中&#xff0c;構建工具配置和自動化部署流程是提升開發效率和項目質量的關鍵環節。本文將深入探討Webpack和Vite這兩大構建工具的核心配置技巧&#xff0c;并詳細介紹CI/CD流程的搭建方法。 一、Webpack核心配置技巧…

輸入npm install后發生了什么

一、準備階段&#xff1a;配置與環境檢查讀取配置優先級npm install 首先加載多層級的配置&#xff08;優先級從高到低&#xff09;4&#xff1a;項目級 .npmrc用戶級 .npmrc&#xff08;如 ~/.npmrc&#xff09;全局 npmrcnpm 內置默認配置可通過 npm config ls -l 查看所有配…

SpringBoot集成Redis、SpringCache

1 Redis介紹 1.1 Redis作為緩存 由于Redis的存取效率非常高,在開發實踐中,通常會將一些數據從關系型數據庫(例如MySQL)中讀取出來,并寫入到Redis中,后續當需要訪問相關數據時,將優先從Redis中讀取所需的數據,以此,可以提高數據的讀取效率,并且對一定程度的保護關系型…

靜態路由綜合配置實驗報告

一、實驗拓撲二、實驗需求1.除了R5的環回地址固定5.5.5.0/24&#xff0c;其他網段基于192.168.1.0/24進行合理劃分&#xff1b;2.R1-R4每個路由器存在兩個環回接口&#xff0c;模擬PC&#xff0c;地址也在192.168.1.0/24網絡內&#xff1b;3.R1-R4不能直接編寫到達5.5.5.0/24的…

【一起來學AI大模型】PyTorch DataLoader 實戰指南

DataLoader 是 PyTorch 中處理數據的核心組件&#xff0c;它提供了高效的數據加載、批處理和并行處理功能。下面是一個全面的 DataLoader 實戰指南&#xff0c;包含代碼示例和最佳實踐。基礎用法&#xff1a;簡單數據加載import torch from torch.utils.data import Dataset, D…

SpringBoot單元測試類拿不到bean報空指針異常

原代碼package com.atguigu.gulimall.product;import com.aliyun.oss.OSSClient; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; impo…

持續集成 簡介環境搭建

1. 持續集成簡介 1.1 持續集成的作用 隨著互聯網的蓬勃發展,軟件生命周期模型也經歷了幾個比較大的階段,從最初的瀑布模型,到 V 模型,再到現在的敏捷或者 devops,不論哪個階段,項目從立項到交付幾乎都離不開以下幾個過程,開發、構建、測試和發布,而且一直都在致力于又…

關于 java:11. 項目結構、Maven、Gradle 構建系統

一、Java 項目目錄結構標準1.1 Java 項目標準目錄結構總覽標準 Java 項目目錄結構&#xff08;以 Maven / Gradle 通用結構為基礎&#xff09;&#xff1a;project-root/ ├── src/ │ ├── main/ │ │ ├── java/ # 主業務邏輯代碼&#xff08;核心…

大數據的安全挑戰與應對

在大數據時代&#xff0c;大數據安全問題已成為開發者最為關注的核心議題之一。至少五年來&#xff0c;大數據已融入各類企業的運營體系&#xff0c;而采用先進數據分析解決方案的組織數量仍在持續增長。本文將明確當前市場中最關鍵的大數據安全問題與威脅&#xff0c;概述企業…

PostgreSQL ERROR: out of shared memory處理方式

系統允許的總鎖數 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);當鎖大于…

Django 模型(Model)

1. 模型簡介 ORM 簡介 MVC 框架中一個重要的部分就是 ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫。即直接面向對象操作數據,無需考慮 sql 語句。 ORM 是“對象-關系-映射”的簡稱,主要任務是:…

深入解析Hadoop RPC:技術細節與推廣應用

Hadoop RPC框架概述在分布式系統的核心架構中&#xff0c;遠程過程調用&#xff08;RPC&#xff09;機制如同神經網絡般連接著各個計算節點。Hadoop作為大數據處理的基石&#xff0c;其自主研發的RPC框架不僅支撐著內部組件的協同運作&#xff0c;更以獨特的工程哲學詮釋了分布…

為什么玩游戲用UDP,看網頁用TCP?

故事場景&#xff1a;兩種不同的遠程溝通方式假設你需要和遠方的朋友溝通一件重要的事情。方式一&#xff1a;TCP — 打一個重要的電話打電話是一種非常嚴謹、可靠的溝通方式。? 1. 建立連接 (三次握手):? 你拿起電話&#xff0c;撥號&#xff08;SYN&#xff09;。? 朋友那…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 這篇文章可以從一個帶有紋理的幾何物體出發&#xff0c;將其身上的紋理自動提取并映射到任意的幾何拓撲結構上&#xff08;見下圖紅線左側&#xff09;&#xff1b;或者從一個白模幾何對象出發&#x…

深度學習圖像分類數據集—玉米粒質量識別分類

該數據集為圖像分類數據集&#xff0c;適用于ResNet、VGG等卷積神經網絡&#xff0c;SENet、CBAM等注意力機制相關算法&#xff0c;Vision Transformer等Transformer相關算法。 數據集信息介紹&#xff1a;玉米粒質量識別分類&#xff1a;[crush, good, mul] 訓練數據集總共有3…

Unity VR手術模擬系統架構分析與數據流設計

Unity VR手術模擬系統架構分析與數據流設計 前言 本文將深入分析一個基于Unity引擎開發的多人VR手術模擬系統。該系統采用先進的網絡架構設計&#xff0c;支持多用戶實時協作&#xff0c;具備完整的手術流程引導和精確的工具交互功能。通過對系統架構和數據管道的詳細剖析&…

【Spring Boot】Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊

Spring Boot 4.0 的顛覆性AI特性全景解析&#xff0c;結合智能編碼實戰案例、底層架構革新及Prompt工程手冊一、Spring Boot 4.0 核心AI能力矩陣二、AI智能編碼插件實戰&#xff08;Spring AI Assistant&#xff09;1. 安裝與激活2. 實時代碼生成場景3. 缺陷預測與修復三、AI引…

audiobookshelf-web 項目怎么運行

git clone https://github.com/audiobookshelf/audiobookshelf-web.git cd audiobookshelf-web npm i 啟動項目 npm run dev http://localhost:3000/

掃描文件 PDF / 圖片 糾斜 | 圖片去黑邊 / 裁剪 / 壓縮

問題&#xff1a;掃描后形成的 PDF 或圖片文檔常存在變形傾斜等問題&#xff0c;手動調整頗為耗時費力。 一、PDF 糾斜 - Adobe Acrobat DC 1、所用功能 掃描和 OCR&#xff1a; 識別文本&#xff1a;在文件中 → 設置 確定后啟動掃描&#xff0c;識別過程中自動糾偏。 2、…