ubuntu高并發內核參數調優 - (壓測客戶端調優)

業務上要求集群提供10w+并發,10w+并發聽上去不是很難,但10w并發持續1小時呢
在業務上線之前還需要我們自己對業務進行壓測,俗稱benchmark。
壓測的服務器也是需要進行性能調優的,以下列出調優前后的參數對比,更直觀的分析和感受參數對程序的影響

壓測前內核參數自檢

#!/bin/bash
# 腳本名稱: check_benchmark_server_kernel_params.sh
# 描述: 查詢壓測服務武相關的Linux內核參數的當前值# 輸出格式化函數
print_header() {echo -e "\n\033[1;34m$1\033[0m"echo "--------------------------------"
}# 文件描述符和端口范圍
print_header "文件描述符和端口范圍"
sysctl fs.file-max
sysctl fs.nr_open
sysctl net.ipv4.ip_local_port_range# TCP連接建立和釋放
print_header "TCP連接建立和釋放"
sysctl net.ipv4.tcp_max_syn_backlog
sysctl net.core.somaxconn
sysctl net.ipv4.tcp_fin_timeout
sysctl net.ipv4.tcp_syncookies
sysctl net.ipv4.tcp_fastopen 2>/dev/null || echo "net.ipv4.tcp_fastopen: [不支持]"
sysctl net.ipv4.tcp_synack_retries
sysctl net.ipv4.tcp_syn_retries
sysctl net.ipv4.tcp_tw_reuse# TCP連接保持和超時
print_header "TCP連接保持和超時"
sysctl net.ipv4.tcp_keepalive_time
sysctl net.ipv4.tcp_keepalive_intvl
sysctl net.ipv4.tcp_keepalive_probes
sysctl net.ipv4.tcp_max_tw_buckets# 內存和緩沖區設置
print_header "內存和緩沖區設置"
sysctl net.core.wmem_max
sysctl net.core.rmem_max
sysctl net.ipv4.tcp_rmem
sysctl net.ipv4.tcp_wmem
sysctl net.core.optmem_max 2>/dev/null || echo "net.core.optmem_max: [不支持]"# 網絡性能和擁塞控制
print_header "網絡性能和擁塞控制"
sysctl net.core.netdev_max_backlog
sysctl net.ipv4.tcp_slow_start_after_idle 2>/dev/null || echo "net.ipv4.tcp_slow_start_after_idle: [不支持]"
sysctl net.ipv4.tcp_mtu_probing
sysctl net.ipv4.tcp_sack
sysctl net.ipv4.tcp_window_scaling
sysctl net.ipv4.tcp_adv_win_scale 2>/dev/null || echo "net.ipv4.tcp_adv_win_scale: [不支持]"
sysctl net.ipv4.tcp_rfc1337 2>/dev/null || echo "net.ipv4.tcp_rfc1337: [不支持]"
sysctl net.ipv4.tcp_congestion_control# 連接跟蹤相關
print_header "連接跟蹤相關"
sysctl net.netfilter.nf_conntrack_max 2>/dev/null || echo "net.netfilter.nf_conntrack_max: [未加載conntrack模塊]"
sysctl net.netfilter.nf_conntrack_tcp_timeout_established 2>/dev/null || echo "net.netfilter.nf_conntrack_tcp_timeout_established: [未加載conntrack模塊]"
sysctl net.netfilter.nf_conntrack_tcp_timeout_time_wait 2>/dev/null || echo "net.netfilter.nf_conntrack_tcp_timeout_time_wait: [未加載conntrack模塊]"
sysctl net.ipv4.conf.all.rp_filter# 其他系統限制
print_header "其他系統限制"
sysctl vm.swappiness
sysctl vm.max_map_count
sysctl kernel.panic 2>/dev/null || echo "kernel.panic: [不支持]"echo -e "\n腳本執行完畢。請將輸出結果保存以便與優化參數進行對比。"

參數修改前后對比表格

壓測客戶端內核參數與默認值對比表

此表格展示了Linux系統默認內核參數值與已優化的壓測客戶端參數值的對比。

文件描述符和端口范圍

參數默認值優化值變化比例影響
fs.file-max~65536200000030.5倍大幅提高系統可打開的文件描述符總數
fs.nr_open104857620000001.9倍提高單個進程可打開的文件描述符數量

TCP連接建立和釋放

參數默認值優化值變化比例影響
net.ipv4.tcp_synack_retries5180%減少減少服務端響應SYN+ACK的重試次數
net.ipv4.tcp_max_syn_backlog10246553664倍極大提高SYN半連接隊列容量
net.core.somaxconn12810485768192倍極大提高已完成連接隊列容量
net.ipv4.tcp_fin_timeout601575%減少大幅加速FIN_WAIT連接的釋放

TCP連接保持和超時

參數默認值優化值變化比例影響
net.ipv4.tcp_keepalive_time72006099%減少極大減少檢測失效連接的等待時間
net.ipv4.tcp_keepalive_intvl753060%減少加速keepalive探測間隔
net.ipv4.tcp_keepalive_probes9367%減少減少確認連接失效前的探測次數

內存和緩沖區設置

參數默認值優化值變化比例影響
net.core.wmem_max2129921258291259倍極大提高寫緩沖區上限
net.core.rmem_max2129921258291259倍極大提高讀緩沖區上限
net.ipv4.tcp_rmem4096 87380 629145610240 87380 12582912最大值增加2倍提高TCP讀緩沖區最大值
net.ipv4.tcp_wmem4096 16384 419430410240 87380 12582912最大值增加3倍提高TCP寫緩沖區最大值
kernel.msgmnb655361310722倍提高消息隊列的最大字節數
kernel.msgmax655361310722倍提高單個消息的最大字節數

網絡性能和擁塞控制

參數默認值優化值變化比例影響
net.core.netdev_max_backlog10006553665.5倍極大提高網絡設備接收隊列容量
net.ipv4.tcp_max_tw_buckets18000014400008倍大幅提高TIME_WAIT狀態連接的容量
net.ipv4.tcp_slow_start_after_idle10禁用防止空閑連接重啟時的性能下降
net.ipv4.tcp_mtu_probing01啟用提高網絡路徑MTU探測能力

其他系統限制

參數默認值優化值變化比例影響
vm.swappiness601083%減少大幅減少內存交換傾向
vm.max_map_count655302621444倍提高內存映射區域數量上限

參數應用

應用方法
將需要修改的參數添加到 /etc/sysctl.conf 文件或 /etc/sysctl.d/ 目錄下的配置文件中,例如創建 /etc/sysctl.d/99-performance.conf,然后執行以下命令使其生效:
sudo sysctl -p /etc/sysctl.d/99-performance.conf
配置文件示例
以下是一個配置文件示例,只包含需要修改的參數:

# 文件描述符和端口范圍
fs.file-max = 2000000
fs.nr_open = 2000000
net.ipv4.ip_local_port_range = 1024 65535# TCP連接建立和釋放
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 65536
net.core.somaxconn = 1048576
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1# TCP連接保持和超時
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3# 內存和緩沖區設置
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 87380 16777216
kernel.msgmnb = 131072
kernel.msgmax = 131072
net.ipv4.tcp_mem = 786432 1048576 1572864# 網絡性能和擁塞控制
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_max_tw_buckets = 1440000
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_notsent_lowat = 16384# 其他系統限制
vm.swappiness = 10
vm.max_map_count = 262144

ulimit調整

還需要調優ulimit數量,一般情況下都設置為65535,這里我的服務器基礎性能高,所以給更大

vim /etc/security/limits.conf
# End of file
*               soft    nofile          1000000
*               hard    nofile          1000000
root            soft    nofile          1000000
root            hard    nofile          1000000

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

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

相關文章

html5制作2048游戲開發心得與技術分享

2048游戲開發心得與技術分享 這里寫目錄標題 2048游戲開發心得與技術分享項目概述技術架構1. 核心技術棧2. 項目結構 核心功能實現1. 數據結構設計2. 移動邏輯實現3. 觸摸支持 性能優化1. DOM操作優化2. 事件處理優化 開發心得1. 代碼組織2. 調試技巧3. 用戶體驗優化 項目亮點技…

dify+deepseek聯網搜索:免費開源搜索引擎Searxng使用(讓你的大模型也擁有聯網的功能)

docker安裝SearXng 項目地址:https://github.com/searxng/searxng-docker 第一步 git clone下來 git clone https://github.com/searxng/searxng-docker.git第二步 進入 searxng-docker目錄中修改docker-compose.yaml(直接復制粘貼) cd searxng-dockerdocker-compose.yaml …

docker的anythingllm和open-webui壓縮包分享(國內鏡像拉取,百度云壓縮包分享)

文章目錄 前言第一部分:鏡像獲取🚀 方式一:切換國內下載鏡像?1. 下載anythingllm? 2. 下載open-webui 🚀方式二:下載我分享的百度云? anythingllm壓縮包百度云鏈接? open-webui壓縮包 第二部分:下載之后…

DeepSeek-R1深度解讀

deepseek提出了一種通過強化學習(RL)激勵大語言模型(LLMs)推理能力的方法,個人認為最讓人興奮的點是:通過RL發現了一個叫“Aha Moment”的現象,這個時刻發生在模型的中間版本中。在這個階段&…

從零實現B站視頻下載器:Python自動化實戰教程

一、項目背景與實現原理 1.1 B站視頻分發機制 Bilibili的視頻采用 音視頻分離技術,通過以下方式提升用戶體驗: 動態碼率適配(1080P/4K/HDR) 分段加載技術(基于M4S格式) 內容保護機制(防盜鏈/簽名驗證) 1.2 技術實現路線 graph TDA[模擬瀏覽器請求] --> B[獲取加密…

AJAX的理解和原理還有概念

你想問的可能是 AJAX(Asynchronous JavaScript and XML) ,它并不是一門新的編程語言,而是一種在無需重新加載整個網頁的情況下,能夠與服務器進行異步通信并更新部分網頁的技術。以下從基本概念、原理、優點、使用場景等…

封裝一個分割線組件

最終樣式 Vue2代碼 <template><div class"sep-line"><div class"sep-label"><span class"sep-box-text"><slot>{{ title }}</slot> <!-- 默認插槽內容&#xff0c;如果沒有傳遞內容則使用title -->&…

Redis基本命令手冊——五大類型

目錄 一&#xff1a;基本操作 二&#xff1a;字符串&#xff08;String&#xff09; 三&#xff1a;哈希&#xff08;Hash) 四&#xff1a;列表&#xff08;List&#xff09; 五&#xff1a;集合&#xff08;Set&#xff09; 六&#xff1a;有序集合&#xff08;Zset&…

【C++】動態規劃從入門到精通

一、動態規劃基礎概念詳解 什么是動態規劃 動態規劃&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是一種通過將復雜問題分解為重疊子問題&#xff0c;并存儲子問題解以避免重復計算的優化算法。它適用于具有以下兩個關鍵性質的問題&#xff1a; 最優子結構&…

Qt動態設置樣式,實現樣式實時切換

文章目錄 概要插件實現界面 核心代碼設置樣式 擴展導入樣式導出樣式 概要 最近需要設計界面&#xff0c;但是使用Qt的Designer只能看到每個界面單獨的樣式&#xff0c;程序中有些事需要主界面調用進行組合的界面&#xff0c;因此需要寫一個插件Ui可以直接輸入樣式內容&#xf…

集成學習之隨機森林

目錄 一、集成學習的含義 二、集成學習的代表 三、集成學習的應用 1、分類問題集成。&#xff08;基學習器是分類模型&#xff09; 2、回歸問題集成。&#xff08;基學習器是回歸模型&#xff09; 3、特征選取集成。 四、Bagging之隨機森林 1、隨機森林是有多個決策樹&a…

矩陣期望 E 的含義:概率

矩陣期望 E 的含義:概率 期望的含義 在概率論和統計學中,數學期望(或均值,簡稱期望)是試驗中每次可能結果的概率乘以其結果的總和,是最基本的數學特征之一,它反映隨機變量平均取值的大小。用公式表示,如果離散型隨機變量 X X X 可能取值為 x i x_

Qt Graphics View

Graphics View框架是用來處理大量2D圖形對象的&#xff0c;適合需要高效管理和交互的場景&#xff0c;比如繪圖軟件、地圖編輯或者游戲。它和QPainter的區別在于&#xff0c;Graphics View提供了更高級別的對象管理&#xff0c;而QPainter更偏向于直接繪制。 一、核心組件 ?Q…

卷積神經網絡 - 卷積層(具體例子)

為了更一步學習卷積神經網絡之卷積層&#xff0c;本文我們來通過幾個個例子來加深理解。 一、灰度圖像和彩色圖像的關于特征映射的例子 下面我們通過2個例子來形象說明卷積層中“特征映射”的概念&#xff0c;一個針對灰度圖像&#xff0c;一個針對彩色圖像。 例子 1&#x…

xlsx.utils.json_to_sheet函數詳解

xlsx.utils.json_to_sheet 是 xlsx 庫中的一個實用函數&#xff0c;用于將 JSON 數據轉換為 Excel 工作表對象。這個函數非常有用&#xff0c;尤其是在你需要從數據庫或其他數據源獲取數據并將其導出到 Excel 文件時。 函數簽名 XLSX.utils.json_to_sheet(data, opts)data&am…

2025-03-17 學習記錄--C/C++-PTA 習題4-7 最大公約數和最小公倍數

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、題目描述 ?? 習題4-7 最大公約數和最小公倍數 本題要求兩個給定正整數的最大公約數和最小公倍數。 輸入格式: 輸入在一…

【源碼閱讀】多個函數抽象為類(實現各種類型文件轉為PDF)

目錄 一、原始函數二、類三、轉換過程 一、原始函數 最開始就是寫了幾個函數&#xff08;包括doc、excel、ppt類型的文件&#xff09;轉換為pdf&#xff0c;需要將這些函數形成一個類。相似的一類函數就可以組成一個實現特定功能的類 import subprocess import pandas as pd i…

VSCode擴展工具Copilot MCP使用教程【MCP】

MCP&#xff08;Model Context Protocol&#xff0c;模型上下文協議&#xff09; &#xff0c;2024年11月底&#xff0c;由 Anthropic 推出的一種開放標準&#xff0c;旨在統一大型語言模型&#xff08;LLM&#xff09;與外部數據源和工具之間的通信協議。本文章教你使用VSCode…

【leetcode100】搜索插入位置

1、題目描述 給定一個排序數組和一個目標值&#xff0c;在數組中找到目標值&#xff0c;并返回其索引。如果目標值不存在于數組中&#xff0c;返回它將會被按順序插入的位置。 請必須使用時間復雜度為 O(log n) 的算法。 示例 1: 輸入: nums [1,3,5,6], target 5 輸出: 2…

【小白向】Word|Word怎么給公式標號、調整公式字體和花括號對齊

【小白向】Word&#xff5c;Word怎么給公式標號、調整公式字體和花括號對齊 我的版本&#xff1a;Word 2021 如需快速查看關鍵步驟&#xff0c;請直接閱讀標紅部分。 如果遇到無法調整的情況&#xff0c;可以直接下載我的示例文檔進行參考&#xff1a;花括號和其他的示例公式.…