nginx優化(持續更新!!!)

1.調整文件描述符

# 查看當前系統文件描述符限制
ulimit -n# 永久修改文件描述符限制
# 編輯 /etc/security/limits.conf 文件,添加以下內容
* soft nofile 65535
* hard nofile 65535# 編輯 /etc/sysctl.conf 文件,添加以下內容
fs.file-max = 65535

2.調整內核參數

vim /etc/sysctl.conf
net.core.somaxconn = 65535  # 最大連接隊列長度
net.core.netdev_max_backlog = 65535  # 網絡設備最大隊列長度
net.ipv4.tcp_max_syn_backlog = 65535  # SYN 隊列長度
net.ipv4.tcp_max_tw_buckets= 65535   #TIME_WAIT狀態的連接的最大數量
net.ipv4.tcp_tw_reuse = 1  # 允許重用 TIME_WAIT 連接
net.ipv4.tcp_tw_recycle = 1  # 快速回收 TIME_WAIT 連接
net.ipv4.tcp_fin_timeout = 30  # FIN 超時時間
fs.file-max = 2097152  #系統支持的最大文件描述符數

3.nginx配置優化
1.worker_processes
worker_processes directive指定nginx worker進程的數量。

worker_processes 1;
#  lscpu命令來找出CPU的核數。

2.accept_mutex
accept_mutex參數的意義:當一個新連接到達時,如果激活了accept_mutex,那么多個Worker將以串行方式來處理,其中有一個Worker會被喚醒,其他的Worker繼續保持休眠狀態;如果沒有激活accept_mutex,那么所有的Worker都會被喚醒,不過只有一個Worker能獲取新連接,其它的Worker會重新進入休眠狀態。

events {accept_mutex on;}

3.accept_mutex_delay
當accept_mutex功能啟用后,只有一個持有mutex鎖的worker進程會接受并處理請求,其他worker進程等待。accept_mutex_delay指定的時間就是這些worker進程的等待時間,過了等待時間下一個worker進程便取得mutex鎖,處理請求。accept_mutex_delay在events模塊中指定,默認的值為500ms。

events {accept_mutex_delay 500ms;}

4.worker_connections
worker_connections的默認值是512,它在events模塊中。它指定了一個worker進程在同一時間可以處理的最大請求數。

events {worker_connections 512;}

5.worker_rlimit_nofile
worker_rlimit_nofile directive,可以用來設置系統可用的文件描述符。這與ulimit設置可用文件描述符的作用是一樣的。如果它們都設置了可用文件描述符,那么worker_rlimit_nofile會覆蓋ulimit的設置。

worker_rlimit_nofile 20960;

6.multi_accept
multi_accept可以讓nginx worker進程盡可能多地接受請求。它的作用是讓worker進程一次性地接受監聽隊列里的所有請求,然后處理。如果multi_accept的值設為off,那么worker進程必須一個一個地接受監聽隊列里的請求。

events {multi_accept on;}

7.use
指定事件模型,epoll適用于Linux,能提高性能.

events {use epoll;}

8.sendfile
當一個程序需要傳輸文件時,Linux內核首先將文件數據緩沖,然后將文件數據傳送給程序緩沖,最后程序將文件數據傳輸到目的地。Sendfile方法是一種數據傳輸的更高效的方法,數據在內核中的文件描述符之間傳輸,而不需要將數據傳輸給程序緩沖。這種方法的結果是改善了對操作系統資源的利用。
我們可以用sendfile directive來啟用sendfile方法,在http,server,location三個模塊都可以定義。

http {sendfile on ;}

9.TCP_NODELAY
禁用Nagle算法,減少延遲

 http {tcp_nodelay on;}

10.TCP_CORK
減少網絡包的數量,提高傳輸效率

http {tcp_nopush on;}

11.keepalive_timeout
長連接超時時間,單位秒

http {# 連接和請求超時設置keepalive_timeout  65; # 長連接超時時間,單位秒client_body_timeout 60; # 讀取客戶端請求主體的超時時間client_header_timeout 60; # 讀取客戶端請求頭的超時時間send_timeout 60; # 向客戶端發送響應的超時時間
}

12.client_body_timeout 60
讀取客戶端請求主體的超時時間

http {# 連接和請求超時設置keepalive_timeout  65; # 長連接超時時間,單位秒client_body_timeout 60; # 讀取客戶端請求主體的超時時間client_header_timeout 60; # 讀取客戶端請求頭的超時時間send_timeout 60; # 向客戶端發送響應的超時時間
}

13.client_header_timeout 60
讀取客戶端請求頭的超時時間

http {# 連接和請求超時設置keepalive_timeout  65; # 長連接超時時間,單位秒client_body_timeout 60; # 讀取客戶端請求主體的超時時間client_header_timeout 60; # 讀取客戶端請求頭的超時時間send_timeout 60; # 向客戶端發送響應的超時時間
}

14.send_timeout 60
向客戶端發送響應的超時時間

http {# 連接和請求超時設置keepalive_timeout  65; # 長連接超時時間,單位秒client_body_timeout 60; # 讀取客戶端請求主體的超時時間client_header_timeout 60; # 讀取客戶端請求頭的超時時間send_timeout 60; # 向客戶端發送響應的超時時間
}

15.client_max_body_size
允許客戶端請求的最大大小,超過此大小會返回413錯誤

http{client_max_body_size 10m;
}

16.Gzip壓縮配置
gzip壓縮功能主要用于在服務器端對響應內容進行壓縮,然后將壓縮后的數據發送給客戶端(如瀏覽器),客戶端收到后會自動解壓縮并使用。

http{# Gzip壓縮配置gzip  on; # 開啟Gzip壓縮gzip_vary on; # 根據客戶端是否接受Gzip來決定是否壓縮gzip_comp_level 6; # 壓縮級別,1-9,6是速度和壓縮率的平衡點gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # 需要壓縮的MIME類型
}

17.worker_cpu_affinity
將每個 worker 子進程與我們的 cpu 物理核心綁定。

worker_cpu_affinity 0001 0010 0100 1000; # 4個物理核心,4個worker子進程

18.worker_priority
指定 worker 子進程的 nice 值,以調整運行 Nginx 的優先級,通常設定為負值,以優先調用 Nginx 。

worker_priority -10; # 120-10=110,110就是最終的優先級

Linux 默認進程的優先級值是120,值越小越優先;nice 定范圍為 -20 到 +19 。
[備注] 應用的默認優先級值是120加上 nice 值等于它最終的值,這個值越小,優先級越高。
19.worker_shutdown_timeout
指定 worker 子進程優雅退出時的超時時間。

worker_shutdown_timeout 5s;
timer_resolution

worker 子進程內部使用的計時器精度,調整時間間隔越大,系統調用越少,有利于性能提升;反之,系統調用越多,性能下降。

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

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

相關文章

apache連接池機制討論

apache連接池的連接有效性 server一般會配置keep-alive超時時間,過了這個時間還沒新請求到來,則關閉連接。客戶端從連接池里拿出連接時,會檢查一下連接是否已關閉,如已關閉,會丟棄掉該連接,并嘗試從連接池…

【QT5 多線程示例】條件變量

文章目錄 條件變量使用 wakeOne()使用 wakeAll() 條件變量 QT的條件變量類是QWaitCondition,有wakeOne() 和 wakeAll() 兩個方法 wakeOne():僅喚醒一個等待的線程。wakeAll():喚醒所有等待的線程。 使用 wakeOne() https://github.com/Bi…

備賽藍橋杯之第十六屆模擬賽第1期職業院校組第四題:世紀危機(人口增長推算)

提示:本篇文章僅僅是作者自己目前在備賽藍橋杯中,自己學習與刷題的學習筆記,寫的不好,歡迎大家批評與建議 由于個別題目代碼量與題目量偏大,請大家自己去藍橋杯官網【連接高校和企業 - 藍橋云課】去尋找原題&#xff0…

從零構建大語言模型全棧開發指南:第三部分:訓練與優化技術-3.2.3預訓練任務設計:掩碼語言建模(MLM)與下一句預測(NSP)

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 3.2.3 預訓練任務設計:`掩碼語言建模(MLM)`與下一句預測(NSP)1. 掩碼語言建模(`Masked Language Modeling, MLM`)1.1 MLM的核心原理與數學形式1.2 高級掩碼優化技術1.2.1 `Span Masking(SpanBER…

OpenBMC:BmcWeb 生效路由2 Trie字典樹

OpenBMC:BmcWeb 生效路由1 基于method分類路由_openbmc web-CSDN博客 可以看到,在internalAdd中: std::vector<BaseRule*> rules; rules.emplace_back(ruleObject); trie.add(rule, static_cast<unsigned>(rules.size() - 1U)); ruleObject首先被放入了每個meth…

Appium中元素定位之一組元素定位API

應用場景 和定位一個元素相同&#xff0c;但如果想要批量的獲取某個相同特征的元素&#xff0c;使用定位一組元素的方式更加方便 在 Appium 中定位一組元素的 API 與定位單個元素的 API 類似&#xff0c;但它們返回的是一個元素列表&#xff08;List<MobileElement>&am…

第五周日志-重新學匯編(2)

機器語言 匯編語言(直接在硬件上工作——硬件系統結構&#xff09;&#xff1a; 1.機器語言 每一種微處理器硬件設計和內部結構不同&#xff08;決定了電信號不同&#xff0c;進而需要不同的機器指令&#xff09; #早期通過紙帶機/卡片機輸入計算機&#xff0c;進行運算 2…

【9】Strongswan collections —— enumerator

//以目錄枚舉為例子&#xff0c;說明enumerator&#xff0c;從源碼剝離可運行 #include <stdio.h> #include <stdbool.h> #include <dirent.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h&…

談談對spring IOC的理解,原理和實現

一、IoC 核心概念 1. 控制反轉&#xff08;Inversion of Control&#xff09; 傳統編程中對象自行管理依賴&#xff08;主動創建&#xff09;&#xff0c;而IoC將控制權轉移給容器&#xff0c;由容器負責對象的創建、裝配和管理&#xff0c;實現依賴關系的反向控制。 2. 依賴…

【Hugging Face 開源庫】Diffusers 庫 —— 擴散模型

Diffusers 的三個主要組件1. DiffusionPipeline&#xff1a;端到端推理工具__call__ 函數callback_on_step_end 管道回調函數 2. 預訓練模型架構和模塊UNetVAE&#xff08;Variational AutoEncoder&#xff09;圖像尺寸與 UNet 和 VAE 的關系EMA&#xff08;Exponential Moving…

甘肅旅游服務平臺+論文源碼視頻演示

4 系統設計 4.1系統概要設計 甘肅旅游服務平臺并沒有使用C/S結構&#xff0c;而是基于網絡瀏覽器的方式去訪問服務器&#xff0c;進而獲取需要的數據信息&#xff0c;這種依靠瀏覽器進行數據訪問的模式就是現在用得比較廣泛的適用于廣域網并且沒有網速限制要求的小程序結構&am…

路由選型終極對決:直連/靜態/動態三大類型+華為華三思科配置差異,一張表徹底講透!

路由選型終極對決&#xff1a;直連/靜態/動態三大類型華為華三思科配置差異&#xff0c;一張表徹底講透&#xff01; 一、路由&#xff1a;互聯網世界的導航系統二、路由類型深度解析三者的本質區別 三、 解密路由表——網絡設備的GPS華為&#xff08;Huawei&#xff09;華三&a…

【RAG綜述系列】之 RAG 相關背景和基本原理

系列文章&#xff1a; 【RAG綜述系列】之 RAG 相關背景和基本原理 【RAG綜述系列】之 RAG 特點與挑戰以及方法與評估 【RAG綜述系列】之 RAG 先進方法與綜合評估 【RAG綜述系列】之 RAG 應用和未來方向 正文&#xff1a; 檢索增強生成&#xff08;Retrieval-Augmented Gen…

CMake 構建的Qt 項目中的構建套件的配置

在Qt 框架中&#xff0c;使用CMake 構建工具時&#xff0c;需要自己給構建套件添加相關配置&#xff0c;否則已經添加的構建套件將不可選擇使用。 創建CMake 項目后&#xff0c;如果打開項目配置時&#xff0c;出現如下構建套件不可選的情況&#xff0c; 需要先確認是否安裝…

本地化智能運維助手:基于 LangChain 數據增強 和 DeepSeek-R1 的K8s運維文檔檢索與問答系統 Demo

寫在前面 博文內容為基于 LangChain 數據增強 和 Ollams 本地部署 DeepSeek-R1實現 K8s運維文檔檢索與問答系統 Demo通過 Demo 對 LEDVR 工作流&#xff0c; 語義檢索有基本認知理解不足小伙伴幫忙指正 &#x1f603;,生活加油 我看遠山&#xff0c;遠山悲憫 持續分享技術干貨…

Kotlin when 表達式完全指南:從基礎到高級的12種實戰用法

掌握 when 的靈活運用&#xff0c;告別繁瑣的 if-else 鏈 以下是 Kotlin 中 when 表達式的 12種核心用法 的全面總結&#xff0c;涵蓋基礎到高級場景&#xff0c;并附帶實用示例&#xff1a; 一、基礎用法 1. 替代 Java 的 switch-case when (x) {1 -> println("一&qu…

新加坡 PSB 認證:安全標準、證書特點及申請注意事項

目錄 什么是PSB認證&#xff1f; 涉及產品范圍 強制性認證產品類別 自愿性認證產品 認證項目與測試標準 1. 安全測試 2. 電磁兼容性&#xff08;EMC&#xff09;測試 3. 能效測試&#xff08;特定產品&#xff09; 認證流程詳解 第一步&#xff1a;準備階段 第二步&a…

UE4學習筆記 FPS游戲制作26 UE中的UI

文章目錄 幾個概念創建一個UI藍圖添加UI獲取UI的引用 切換設計器和UI藍圖將UI添加到游戲場景錨點軸點slotSizeToContent三種UI數據更新方式函數綁定屬性綁定事件綁定 九宮格分割圖片 幾個概念 UMG&#xff1a;UE的UI編輯器 slate UI: UE的UI的編輯語言 創建一個UI藍圖 右鍵用…

HttpRunner v4.x 遠程調用實踐指南

一、基于 SSH 的遠程執行方案 1. 環境準備流程 在目標服務器部署 HttpRunner 運行時環境&#xff1a; # 遠程服務器執行&#xff08;需 Golang 1.18 和 Python 3.8&#xff09; curl -ksSL https://httprunner.com/script/install.sh | bash配置免密登錄&#xff08;本地機器…

頭條項目的文章延遲發布功能

最近做的頭條項目其中有個功能是創作者發表的文章可以設置在未來某個時間發表&#xff0c;在實現這個功能的時候就在想該怎么實現呢&#xff1f;剛開始想的是利用Spring的定時任務定時的去數據庫中查詢&#xff0c;可以這個查詢頻率該怎么設置&#xff0c;每次從數據庫中需要查…